【发布时间】:2017-05-16 04:09:14
【问题描述】:
假设我有一个数据框:
C1 V1 C2 V2 Cond
1 2 3 4 X
5 6 7 8 Y
9 10 11 12 X
语句应返回:if Cond == X, pick C1 and C2, else pick C2 and V2。
输出数据框类似于:
C V
1 2
7 8
9 10
** 编辑:再添加一个要求:列数可以更改,但遵循一些命名模式。在这种情况下,选择其中包含“1”的所有列,否则选择“2”。我认为硬编码的解决方案可能不起作用。
【问题讨论】:
-
indexer = {'X': ['C1', 'V1'], 'Y': ['C2', 'V2']}; pd.concat([pd.DataFrame(df.loc[df.Cond==k, v].values, columns= ['C','V']) for k,v in indexer.items()])是这样做的一种方法,但它不保留行的顺序。
标签: python pandas conditional extract multiple-columns