如何使用布尔值将一维DataFrame扩展为二维DataFrame?

时间:2016-12-14 18:12:11

标签: python pandas

>>> df = pd.DataFrame(data = ['a','b','b','c'],index=['day1','day1','day2','day2'],columns=['name'])

     name
day1    a
day1    b
day2    b
day2    c

如何将df转换为具有布尔值(如

)的二维DataFrame
      a  b  c
day1  1  1  0
day2  0  1  1

1 个答案:

答案 0 :(得分:2)

1)(较慢的方法) - 使用crosstab计算计数频率表:

pd.crosstab(df.index, df['name'], rownames=[None]).rename_axis(None, 1)

2)(更快的方法) - 在索引轴上执行Groupby并通过填充0的缺失值来采用value_counts + unstack

df.groupby(level=0)['name'].value_counts().unstack(fill_value=0).rename_axis(None, 1)

两种情况下的结果输出:

enter image description here