首页 > 解决方案 > 如何将数据框旋转为方形数据框,并将其他列中的交叉点数作为值

问题描述

如何将数据框旋转为方形数据框,其中值列中的交叉点数量作为值

我的输入数据框是

field    value
a          1
a          2
b          3
b          1
c          2
c          5

输出应该是

  a b c
a 2 1 1
b 1 2 0
c 1 0 2

输出数据框中的值应该是值列中值的交集数。

标签: pythonpandas

解决方案


使用交叉连接crosstab

df = df.merge(df, on='value')
df = pd.crosstab(df['field_x'], df['field_y'])
print (df)

field_y  a  b  c
field_x         
a        2  1  1
b        1  2  0
c        1  0  2

然后删除索引和列名rename_axis

#pandas 0.24+
df = pd.crosstab(df['field_x'], df['field_y']).rename_axis(index=None, columns=None)
print (df)
   a  b  c
a  2  1  1
b  1  2  0
c  1  0  2

#pandas bellow
df = pd.crosstab(df['field_x'], df['field_y']).rename_axis(None).rename_axis(None, axis=1)

推荐阅读