Python 基于带有Pandas的groupby将列拆分为多个列
我刚刚开始使用Python,我遇到了一个与我正在使用的数据集相关的问题 我有以下数据集:Python 基于带有Pandas的groupby将列拆分为多个列,python,pandas,Python,Pandas,我刚刚开始使用Python,我遇到了一个与我正在使用的数据集相关的问题 我有以下数据集: C1 C2 C3 C4 C5 C6 99 069 99002068 3348117 3230802 T6 99 069 99002063 4599974 178885 T4 99 069 99002063 4599974 4606066 T4 99 069 99002063 4599974 2
C1 C2 C3 C4 C5 C6
99 069 99002068 3348117 3230802 T6
99 069 99002063 4599974 178885 T4
99 069 99002063 4599974 4606066 T4
99 069 99002063 4599974 236346 T4
99 069 99002063 4599974 310114 T4
我需要根据C1、C2、C3、C4、C6列的分组,将C5列转置为多个列
到目前为止,我编写的代码如下:
#加载插件
作为pd进口熊猫
#导入CSV
数据=pd.read\U csv(
“C:/Users/mcatoogno/Desktop/lista_collegamenti_onb.csv”,
sep=“;”,
标题=无,
dtype=str,
usecols=[0,1,2,3,4,5],
名称=[“C1”、“C2”、“C3”、“C4”、“C5”、“C6”]
)
#排序值
dataSort=data.sort_值([“C1”、“C2”、“C3”、“C4”])
#基于分组函数的列转置
dataTranspose=dataSort.groupby([“C1”、“C2”、“C3”、“C4”、“C6”])[“C5”]。应用(列表)
使用上面的代码,结果是
C1 C2 ... C6 C5
99 000 ... 09900000001100 [102995, 102997, 102996]
99 000 ... 09900000001135 [103042]
我不知道如何将列C5拆分为多个列,每个列的名称为CN_1、CN_2、…、CN_x
我可以使用哪个python函数
提前谢谢 您可以通过以下方式为每个组的连续值计数创建帮助器系列:
MultiIndex
,并通过以下方式重塑:
您的解决方案应更改为每个构造函数创建新的DataFrame
:
dataTranspose = dataSort.groupby(["C1", "C2", "C3", "C4", "C6"])["C5"].apply(list)
df = (pd.DataFrame(dataTranspose.values.tolist(), index = dataTranspose.index)
.add_prefix('Cn_')
.reset_index())
print (df)
C1 C2 C3 C4 C6 Cn_0 Cn_1 Cn_2 Cn_3
0 99 69 99002063 4599974 T4 178885 4606066.0 236346.0 310114.0
1 99 69 99002068 3348117 T6 3230802 NaN NaN NaN
可能重复的
dataTranspose = dataSort.groupby(["C1", "C2", "C3", "C4", "C6"])["C5"].apply(list)
df = (pd.DataFrame(dataTranspose.values.tolist(), index = dataTranspose.index)
.add_prefix('Cn_')
.reset_index())
print (df)
C1 C2 C3 C4 C6 Cn_0 Cn_1 Cn_2 Cn_3
0 99 69 99002063 4599974 T4 178885 4606066.0 236346.0 310114.0
1 99 69 99002068 3348117 T6 3230802 NaN NaN NaN