python - 拆分 DataFrame 并立即将代码应用于所有 DataFrame?

标签 python pandas dataframe split group-by

我想按列值将我的 DataFrame 从十二行分成三个 DataFrame,然后将一组代码同时应用于所有 DataFrame。

    A     B      C      
 1  A   0.25     0      
 2  A   0.50     0      
 3  A   0.75     0     
 4  B   1.00     1      
 5  B   1.25     1      
 6  B   1.75     1      
 7  C   0.50     1     
 8  C  -0.25     0      
 9  C   1.25     1      
10  D   0.75     1      
11  D  -0.75     0      
12  D  -1.00    -1 

生成的数据帧应该是:

    A     B      C      
 1  A   0.25     0      
 2  A   0.50     0      
 3  A   0.75     0

 4  B   1.00     1      
 5  B   1.25     1      
 6  B   1.75     1

 7  C   0.50     1     
 8  C  -0.25     0      
 9  C   1.25     1

10  D   0.75     1      
11  D  -0.75     0      
12  D  -1.00    -1 

到目前为止,我已经尝试过 df.groupby(['A'])df.set_index(['A']) 但这些函数似乎并不让我能够无错误地应用一组代码。

最佳答案

最简单的是通过转换为tuple然后转换为dictgroupby来创建所有DataFramesdict 对象:

d = dict(tuple(df.groupby('A')))
print (d)
{'B':    A     B  C
4  B  1.00  1
5  B  1.25  1
6  B  1.75  1, 'A':    A     B  C
1  A  0.25  0
2  A  0.50  0
3  A  0.75  0, 'D':     A     B  C
10  D  0.75  1
11  D -0.75  0
12  D -1.00 -1, 'C':    A     B  C
7  C  0.50  1
8  C -0.25  0
9  C  1.25  1}

print (d['A'])
   A     B  C
1  A  0.25  0
2  A  0.50  0
3  A  0.75  0

对于应用功能,可以使用:

for i, x in d.items():
    d[i] = x.mean(axis=1)

print (d['A'])
1    0.125
2    0.250
3    0.375
dtype: float64

但更好的方法是将 groupby 与自定义函数一起使用 - 请参阅 docs :

def f(x):
    print (x)
    return x.mean(axis=1)

df1 = df.groupby('A').apply(f)
print (df1)
A  1     0.125
   2     0.250
   3     0.375
B  4     1.000
   5     1.125
   6     1.375
C  7     0.750
   8    -0.125
   9     1.125
D  10    0.875
   11   -0.375
   12   -1.000
dtype: float64

关于python - 拆分 DataFrame 并立即将代码应用于所有 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437190/

相关文章:

python - Beautiful Soup Find() 返回 AttributeError

python - Pandas 中的时间序列数据集到每小时特征数据集

python - 按 10 分钟间隔对 pandas DataFrame 进行分组

python-3.x - 通过扩展右数据帧的单元格内容省略左连接中的重复项

arrays - 将数据框转换为逗号分隔字符串列表的最快方法

python - 将 Colormap 功能与 Pandas.DataFrame.Plot 结合使用

python - Flask-SQLAlchemy : Manipulate attribute of a data upon fetching

python - Airflow 1.10 : Task duration failing

python - 为什么 `describe` 函数使用科学记数法显示 float ?

r - 搜索带条件的行并更改它们