熊猫-将列转换为行

时间:2019-05-21 23:15:02

标签: python pandas

我有一个这样的DataFrame:

+-------+-----------+
| File  |  Column   |
+-------+-----------+
| File1 | FirstName |
| File1 | LastName  |
| File2 | ID        |
| File2 | City      |
| File2 | State     |
+-------+-----------+

如何将File列分组并分别将Column值作为行传递?即:

+-------+-----------+----------+-------+
| File  |   Col1    |   Col2   | Col3  |
+-------+-----------+----------+-------+
| File1 | FirstName | LastName | NaN   |
| File2 | ID        | City     | State |
+-------+-----------+----------+-------+

我想我需要对其进行透视,并将File作为索引,并将Column作为值:

df.pivot(index='File', columns='', values='Column')

但是,这就是让我感到困惑的地方-我不确定columns参数要传递什么,即使我需要数据透视表也是如此。谢谢你。

2 个答案:

答案 0 :(得分:1)

感谢@razdi评论和@WeNYoBen评论here的一种方式。

rule_weights = (20, 10, 5)
rule_counts = (3, 2, 4)
s = sum([w * c for (w, c) in zip(rule_weights, rule_counts)])
assignment = [100 / s * w * c for (w, c) in zip(rule_weights, rule_counts)]

答案 1 :(得分:1)

df = pd.pivot_table(df,index=['File'], columns=df.groupby(['File']).cumcount().add(1), values=['Column'],aggfunc='sum')
df.columns=df.columns.map('{0[0]}{0[1]}'.format) 

使用以下方法找到答案

Pandas - Convert columns to new rows after groupby