我尝试了多种东西(地图,过滤器,连接),但似乎没有任何效果。 我想要做的是下表中最好的描述:(我需要获得"必需"列)
colA colB colC ref required
1 a1 b1 c1 colA a1
2 a2 b2 c2 colA a2
3 a3 b3 c3 colB b3
4 a4 b4 c4 colB b4
5 a5 b5 c5 colC c5
6 a6 b6 c6 colC c6
上面只是一个例子 - 在实例中我有> 50列,所以做条件不会起作用......
有任何建议怎么做?
答案 0 :(得分:4)
如果我正确理解您的问题,以下apply
将会解决问题:
# Starting DataFrame:
>>> df
colA colB colC ref
1 a1 b1 c1 colA
2 a2 b2 c2 colA
3 a3 b3 c3 colB
4 a4 b4 c4 colB
5 a5 b5 c5 colC
6 a6 b6 c6 colC
df['required'] = df.apply(lambda x: x.loc[x.ref], axis=1)
# Final DataFrame:
>>> df
colA colB colC ref required
1 a1 b1 c1 colA a1
2 a2 b2 c2 colA a2
3 a3 b3 c3 colB b3
4 a4 b4 c4 colB b4
5 a5 b5 c5 colC c5
6 a6 b6 c6 colC c6
答案 1 :(得分:3)
我使用lookup method:
In [85]: df['required'] = df.lookup(df.index, df.ref)
In [86]: df
Out[86]:
colA colB colC ref required
1 a1 b1 c1 colA a1
2 a2 b2 c2 colA a2
3 a3 b3 c3 colB b3
4 a4 b4 c4 colB b4
5 a5 b5 c5 colC c5
6 a6 b6 c6 colC c6