python - 使用 Pandas 将多行转换为单行

标签 python pandas dataframe rows

我确信这很容易做到,但我无法弄清楚。 我正在用 python 编码并使用 pandas 来处理数据帧。我的数据框如下所示:

a b  c
1 10 20
1 30 40
1 60 70
1 80 100
2 10 20
2 60 70
2 80 100

我想这样改造它:

a b1 c1 b2 c2 b3 c3 b4 c4
1 10 20 30 40 60 70 80 100
2 10 20 60 70 80 100 NA NA

基本上,对于 a 中的值相同的每一行,获取 bc 中的值并将它们转换为新列,这样我最终对于 a 中的每个值都只有一行。

我希望我说得足够清楚,如果不清楚,请随时告诉我。 预先感谢您提供的任何帮助!

弗洛里安。

最佳答案

我们需要使用cumcount在这里创建一个帮助键

s=df.assign(key=df.groupby('a').cumcount()+1).set_index(['a','key']).stack().unstack([1,2])
s.columns=s.columns.map('{0[1]}{0[0]}'.format)
s
Out[396]: 
     b1    c1    b2    c2    b3     c3    b4     c4
a                                                  
1  10.0  20.0  30.0  40.0  60.0   70.0  80.0  100.0
2  10.0  20.0  60.0  70.0  80.0  100.0   NaN    NaN

关于python - 使用 Pandas 将多行转换为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50088085/

相关文章:

python - 有选择地删除 pandas 数据框中已弃用的行

python - 将 Dataframe 转换为具有列表值的字典

Python:读写TIFF 16位,三 channel ,彩色图像

python - 删除 pandas plot.area 的抗锯齿

python - 如何使用字典转换列表中的值

python - 合并和聚合两个数据帧(具有相同的列,但不是总列数)

sorting - SubDataFrame 的自定义排序

python - 重复同一行 Pandas Dataframe 构造

python - 使用两个或多个列表进行聚类

python - 在 ply 的正则表达式中匹配 unicode