python - 按组 Python 拆分 Dataframe

标签 python pandas

我有一个 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))

最佳答案

可能的答案

尚不完全清楚您要查找的内容,但如果您需要按参与者对数据帧进行分组,请尝试使用 df.set_index 将其设置为索引:

df.set_index('Participant', inplace=True)

假设您有参与者 AB。您可以通过 df.loc 获取参与者 A 的所有 Fluency 值或df.iloc (用于按位置而不是名称进行引用):

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

编辑:正如评论中提到的,您也可以使用df.loc['A', 'Fluency'],但我遇到了一些问题当我有一个复杂的多索引时,我自己的工作中就会用到这个。这里使用的格式:df.loc[index_specation][column_specation] 似乎对我来说更一致。

关于python - 按组 Python 拆分 Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47058108/

相关文章:

python - 从 MIDI 设备实时获取输入(Python)

python - 统一码编码错误 : 'ascii' codec can't encode character u'\xe9' in position 54: ordinal not in range(128)

python - Scikit-learn 的 DecisionTreeClassifier 的 fit 方法将 ValueError : Couldn't broadcast input array from shape (10, 35) 赋予形状 (10)

python - 为什么 pandas.to_datetime 对于 '2014/12/31' 等非标准时间格式很慢

python - pyplot 图表上光标位置的详细日期

python - 多维切片的紧凑符号

python - pytest模拟: Mock an abstract class

python - 从 html 表制作数据框时,可以在 pandas read_html 中保留换行符吗?

python - “NoneType”对象没有属性 'fillna'错误

Python:将文本字符串从DataFrame提取为长字符串