在数据框中存储数据

3

作为一个刚接触Python的人,我正在努力寻找一种将原始数据进行操作并存储在数据框中,然后再使用pandas和R进行操作的方法。

以下是我的一些代码示例:

if 'Subject' in f:
     for i in range (len(time)):
          (...)
                    if  Description[j] == 'response':  
                        RT.append(time[j] - time_stim)
                        motor_time.append(time[j] - time_response)                
                        break

我的原始数据是一个 .txt 文件,如下所示:

Type,Description,Time,Channel 
Categorie,PC,153,1,All 
Stimulus,S11,1510,1,All 
Stimulus,S202,3175,1,All 
Stimulus,EMG_Onset,3978,1,EMGL 
Stimulus,response,4226,1,All 
Categorie,CC,5785,1,All 
Stimulus,S11,7141,1,All 
Stimulus,S202,8807,1,All 
Stimulus,EMG_Onset,9549,1,EMGL
Stimulus,EMG_Onset,9965,1,EMGL 
Stimulus,response,10249,1,All

在这个例子中,我想把从这段代码中获取的RT或motor_time存储在一个尚不存在的数据框中,先用Python,然后再用R。这个数据框需要存储所有实验条件和受试者的所有参数。
在这种情况下,所有结果都存储在数字 np.array 中,我不知道如何将它们与我之前创建的特定 R 代码一起使用。
谢谢。

1
你的“原始”数据是什么格式?请提供一个例子。为什么要坚持混合使用Python和R(虽然这是可能的,但你需要它做什么)? - lanenok
强烈支持lanenok的建议。除非必须,不要混合使用两种不同的语言,这必然会更加复杂。只需选择其中一种语言并从那里开始。如果确实想在它们之间共享数据框,则R和pandas都可以读/写HDF5。 - JohnE
2个回答

1
我首先要说的是,我不认为你有任何理由将Python和R混合使用。
如果你已经在R中进行了分析,可以直接将TXT文件读入R数据框。
df = read.csv("myfile.txt")
head(df)  # to display the first few rows of your data frame

你的第1、2和5列将被转换为因子(如果你需要可以更改)。
如果你需要Python,你可以将文件读入pandas DataFrame。
import pandas as pd
df = pd.read_csv("myfile.txt")
df.head()  # to display the first few rows of your data frame

如果这不是您问题的解决方案,请说明您想要什么?
有一个rpy包,它允许您在python中使用R代码。无论如何,它需要额外的python编程代码。
至于将pandas数据框导入R:我会将其保存为CSV文件或其他格式(另存为“保存到硬盘”),然后在R中打开。但CSV文件是您最初获得的,所以对您没有意义。

谢谢您的回答。我正在寻找的解决方案是提取实际Python代码中打印的所有对象(例如此描述中的RT或Motor_time),并将其放入df中,然后导入到R中,但我没有找到任何不需要重新编写使用Pandas的代码的解决方案。 但我将尝试使用Pandas重新编写Python代码并学习如何使用它,这似乎是最好的解决方案,也许我随后将能够使用Python执行所有计算。 - S-Oxyde
“printed by the actual python code”是什么意思?使用pandas也是“actual python code”。你的例子不清楚,因为f、time、RT和motor_time没有定义。无论如何,如果你的目标是实现结果-选择R。如果你想用Python玩得开心,就选择Python和pandas。 - lanenok
这一次我选择结果,但对于下一组数据,由于时间压力较小,我肯定会使用Python。谢谢你的帮助。 - S-Oxyde

1

我终于找到了一个简单的方法,可能之前不知道该搜索什么或如何提问,但这是我的解决方案:

df_trans = pd.DataFrame({'Sujet': np.array(subj_id),
                   'Temps_moteur': np.array(motor_time),
                   'TR' : np.array(RT),
                   ...})

并且将其保存并在R中使用:
df_trans.to_csv('x.csv')

谢谢Pandas!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接