如何在pandas中分组后将值转换为列?

时间:2015-12-04 19:02:44

标签: python pandas

例如:

输入:

    column1
A   value1
A   value2
A   value2
B   value3
B   value3

输出:

    value1   value2   value3
A   1        1        0
B   0        0        1

3 个答案:

答案 0 :(得分:0)

for val in df['column1'].unique():
    df[val] = df['column1']==val
df.groupby(df.index).any().drop('column1', axis=1)

如果你需要将True / False转换为1/0,你可以这样做:

df.applymap(lambda x: 1 if x else 0)

答案 1 :(得分:0)

找到了一种更简单的方法:



mutex




答案 2 :(得分:0)

方法#0,只是通过另一个问题提醒,您可以使用UITableViewCell

detailTextLabel

方法#1:您可以使用pd.crosstab>>> pd.crosstab(df.index, df.column1).astype(bool).astype(int) column1 value1 value2 value3 row_0 A 1 1 0 B 0 0 1

get_dummies

为您提供细胞计数,同样

groupby

方法#2:添加一个虚拟列然后转动:

>>> pd.get_dummies(df.column1)
   value1  value2  value3
A       1       0       0
A       0       1       0
A       0       1       0
B       0       0       1
B       0       0       1
>>> pd.get_dummies(df.column1).groupby(level=0).sum()
   value1  value2  value3
A       1       2       0
B       0       0       2