Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按Python组拆分数据帧_Python_Pandas - Fatal编程技术网

按Python组拆分数据帧

按Python组拆分数据帧,python,pandas,Python,Pandas,我有一个CSV文件,里面装满了偏好实验的评分数据。该文件相当基本,有5行,其中我需要4行(参与者、图像、流利度、评级和版本) 我已经创建了一个数据框架来隔离我需要的列,并且我已经按流利程度(1和4)分割了这个框架,这样我就可以得到每个流利程度的组平均评分 我不知道如何将每个参与者的文件分割(每个人每流利程度有2个偏好评分)以获得个人评分 下面是我的代码供参考 我对编码相当陌生,所以这可能不是最有效的方法 谢谢 import pandas as pd import numpy as np # cr

我有一个CSV文件,里面装满了偏好实验的评分数据。该文件相当基本,有5行,其中我需要4行(参与者、图像、流利度、评级和版本)

我已经创建了一个数据框架来隔离我需要的列,并且我已经按流利程度(1和4)分割了这个框架,这样我就可以得到每个流利程度的组平均评分

我不知道如何将每个参与者的文件分割(每个人每流利程度有2个偏好评分)以获得个人评分

下面是我的代码供参考

我对编码相当陌生,所以这可能不是最有效的方法

谢谢

import pandas as pd
import numpy as np
# create dataframe from csv file and import only the colums you want
df = pd.read_csv('Pre-experiment.csv', usecols=[0,2,3,4])



pre_fluent = df[df['Fluency']== 1]
pre_disfluent = df[df['Fluency']==4]
pre_version1 = df[df['Version']==1]
pre_version2 = df[df['Version']==2]

print (pre_fluent)
print (pre_disfluent)
pre_mean_fluent = np.mean(pre_fluent)
pre_mean_disfluent = np.mean(pre_disfluent)
print (pre_mean_fluent)
print (pre_mean_disfluent)

df1 = pd.read_csv('Post-experiment.csv', usecols=[0,2,3,4])
#print (df)


post_fluent = df1[df['Fluency']== 1]
post_disfluent = df1[df['Fluency']==4]
post_version1 = df1[df['Version']==1]
post_version2 = df1[df['Version']==2]

print ("Dataframe sortted by fluency: {}".format(post_fluent))
print (post_disfluent)

post_mean_fluent = np.mean(post_fluent)
post_mean_disfluent = np.mean(post_disfluent)
print ("Post_Fluent Mean:   {}".format(post_mean_fluent))
print ("Post_Disfluent Mean: {}".format(post_mean_disfluent))
可能的答案 目前还不完全清楚您在寻找什么,但如果您需要按参与者对数据帧进行分组,请尝试使用以下方法将其设置为索引:

假设您有参与者
A
B
。您可以使用或(用于按位置而不是名称引用)获取参与者
A
的所有
流利度值:

这可能在一定程度上取决于实际数据的格式,但希望它能让您更接近所需的内容

一个有效的例子
编辑:如评论中所述,您也可以使用
df.loc['a','Fluency']
,但当我有一个复杂的多索引时,我在自己的工作中遇到了一些问题。这里使用的格式:
df.loc[index\u specification][column\u specification]
对我来说似乎更为一致。

你能澄清问题是什么吗?你能举个例子说明你的数据是什么样的,以及你希望最终输出是什么样的吗?与
df.loc相比,IMO
df.loc['A','Fluency']
更惯用['A']['Fluence']
谢谢,这真的很有帮助。@BryonyMcKean很高兴我能帮上忙。当你获得更多的声誉分数时,如果答案对你有帮助,请将其标记为“已接受”。这样将来遇到你的问题的人就会知道什么是有效的。
df.set_index('Participant', inplace=True)
fluency_A = df.loc['A']['Fluency']  # or df.loc['A', 'Fluency']
# Make up some data that we can read into our dataframe.
data = io.StringIO("""Participant,Fluency,Other
A,1,5
A,2,5
B,3,6
B,4,6""")
# Read the data, set the index, and get Fluency for "A".
df = pd.read_csv(data)
df.set_index('Participant', inplace=True)
df.loc['A']['Fluency']
# Participant
# A    1
# A    2
# Name: Fluency, dtype: int64