来自 pd.concate groupby() 数据帧的 csv 格式 python
csv format of dataframe from pd.concate groupby() dataframe in python
假设我有多个格式为
的数据框
Id no
A
B
1
2
1
2
3
5
2
5
6
1
6
7
我想按“Id”对数据框进行分组并应用攻击,然后将新值存储在不同的数据框中,例如
df_calc = pd.DataFrame(columns=["Mean", "Median", "Std"])
for df in dataframes:
mean = df.groupby(["Id"]).mean()
median = df.groupby(["Id"]).median()
std = df.groupby(["Id"]).std()
df_f = pd.DataFrame(
{"Mean": [mean], "Median": [median], "Std": [std]})
df_calc = pd.concat([df_calc, df_f])
这是我的最终数据帧 df_calc
的格式
但我希望它看起来像这样
我该怎么做?
您可以尝试 agg
多个函数,然后交换列级别并对列重新排序:
out = df.groupby('Id no').agg({'A': ['median','std','mean'],
'B': ['median','std','mean']})
print(out)
A B
median std mean median std mean
Id no
1 4.0 2.828427 4.0 4.0 4.242641 4.0
2 4.0 1.414214 4.0 5.5 0.707107 5.5
out = out.swaplevel(0, 1, 1).sort_index(axis=1)
print(out)
mean median std
A B A B A B
Id no
1 4.0 4.0 4.0 4.0 2.828427 4.242641
2 4.0 5.5 4.0 5.5 1.414214 0.707107
假设我有多个格式为
的数据框Id no | A | B |
---|---|---|
1 | 2 | 1 |
2 | 3 | 5 |
2 | 5 | 6 |
1 | 6 | 7 |
我想按“Id”对数据框进行分组并应用攻击,然后将新值存储在不同的数据框中,例如
df_calc = pd.DataFrame(columns=["Mean", "Median", "Std"])
for df in dataframes:
mean = df.groupby(["Id"]).mean()
median = df.groupby(["Id"]).median()
std = df.groupby(["Id"]).std()
df_f = pd.DataFrame(
{"Mean": [mean], "Median": [median], "Std": [std]})
df_calc = pd.concat([df_calc, df_f])
这是我的最终数据帧 df_calc
的格式
但我希望它看起来像这样
我该怎么做?
您可以尝试 agg
多个函数,然后交换列级别并对列重新排序:
out = df.groupby('Id no').agg({'A': ['median','std','mean'],
'B': ['median','std','mean']})
print(out)
A B
median std mean median std mean
Id no
1 4.0 2.828427 4.0 4.0 4.242641 4.0
2 4.0 1.414214 4.0 5.5 0.707107 5.5
out = out.swaplevel(0, 1, 1).sort_index(axis=1)
print(out)
mean median std
A B A B A B
Id no
1 4.0 4.0 4.0 4.0 2.828427 4.242641
2 4.0 5.5 4.0 5.5 1.414214 0.707107