如何枢转pandas数据框,以便跨多个列的唯一值成为新列?

时间:2018-12-24 00:46:44

标签: python pandas numpy dataframe

我有一个熊猫数据框,格式为:

df

    col_1      col_2      col_3      col_4
ID
1     A          B          C          A
2     B          D
3     A          C          B

df = pd.DataFrame({'col_1':['A','B','A'], 'col_2':['B','D','C'], 'col_3':['C',np.NaN,'B'], 'col_4':['A', np.NaN, np.NaN]}, index=[1,2,3])

请注意,跨列重复的值不是偶然的-它们引用相同的实体(例如col_1中的A与col_4中的A相同)。我正在尝试透视此数据框的值,以使这些唯一值成为新的列。例如, df 将变为:

new_df

      A      B      C      D
ID
1     2      1      1      0
2     1      0      0      1
3     1      1      1      0

新值表示计数。我已经尝试过pd.get_dummies(),但它没有给我我想要的东西。实现这一目标的最直观的方法是什么?

1 个答案:

答案 0 :(得分:4)

IIUC使用str.get_dummiesdf.stack().loc[lambda x : x!=''].str.get_dummies().sum(level=0) A B C D ID 1 2 1 1 0 2 0 1 0 1 3 1 1 1 0

<label>{{currentDate | date:'MMM'}}</label>
<button (click)="nextMonth()">Next</button>