>>> 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
发布于 2016-12-14 18:13:26
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)
在这两种情况下产生的产出:
https://stackoverflow.com/questions/41149324
复制相似问题