如何透视复杂的数据框 [英] how to pivot complex dataframe
本文介绍了如何透视复杂的数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个如下所示的数据框.
I have a dataframe shown in below.
df =pd.DataFrame({'ID': [1, 2, 3, 4, 5], 'contract1' :["A", "B", "C", "D", "B"],
'contract2' :["C", "A", np.nan, "A", np.nan],
'contract3' :[np.nan, "C", np.nan, np.nan, np.nan] })
df
ID contract1 contract2 contract3
1 A C nan
2 B A C
3 C nan nan
4 D A nan
5 B nan nan
我想要这样的标记结果;
I would like the flag result like this;
ID A B C D
1 1 0 1 0
2 1 1 1 0
3 0 0 1 0
4 1 0 0 1
5 0 1 0 0
此标志表显示每个ID是否具有每个合约. 也许可以使用数据透视,但是我无法处理这种复杂的数据框... 我可以问一下如何转换吗?
This flag table show whether each ID have a each contract. Maybe pivot is available,but I couldn't handle this kind of complex dataframe... Can I ask how to transform ?
推荐答案
一个更快的实现是使用 str.get_dummies
,如下所示:
A Faster implementation would be to use melt
in conjunction with str.get_dummies
as shown:
pd.melt(df, id_vars=['ID']).set_index('ID')['value'] \
.str.get_dummies() \
.groupby(level=0) \
.agg(np.sum)
A B C D
ID
1 1 0 1 0
2 1 1 1 0
3 0 0 1 0
4 1 0 0 1
5 0 1 0 0
这篇关于如何透视复杂的数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文