我有一个Pandas数据框,如下所示:
c1 c2 c3 c4
p1 q1 r1 20
p2 q2 r2 10
p3 q3 r1 30
我想拉出列c3的唯一值并将它们变成新列,最终看起来如下所示 -
c1 c2 r1 r2
p1 q1 20 0
p2 q2 0 10
p3 q3 30 0
有没有办法实现这个目标?我正在尝试使用数据透视表,但无法获得所需的结果。
答案 0 :(得分:0)
您可以使用.where()
分别创建列r1
和r2
。
# data
# =================================
print(df)
c1 c2 c3 c4
0 p1 q1 r1 20
1 p2 q2 r2 10
2 p3 q3 r1 30
# processing
# ==================================
df['r1'] = df['c4'].where(df.c3 == 'r1', 0)
df['r2'] = df['c4'].where(df.c3 == 'r2', 0)
df.drop(['c3', 'c4'], axis=1)
c1 c2 r1 r2
0 p1 q1 20 0
1 p2 q2 0 10
2 p3 q3 30 0