我有一个像这样的pandas DataFrame:
nameA
我想根据以下规则打印此数据框的行:如果statusA
为Q
,则输出列statusB
如果Q
为nameB
则为statusA
输出列statusB
。如果Q
和nameA
都是nameB
,则应输出a,Q
b,Q
z,Q
o,Q
e,Q
f,Q,r,Q
和css/styles.css
列。
这是否有一个oneliner?
更新
预期产出:
js
答案 0 :(得分:0)
> data['con'] = data['statusA'] + data['statusB']
> data.apply(lambda v: v['nameA'] if v['con'] == 'QX' else v['nameB'] if v['con'] == 'XQ' else v['nameA']+ ','+ v['nameB'], axis=1)
0 a
1 b
2 z
3 o
4 e
5 f,r
dtype: object
您可以使用字符串连接来生成确切的结果。
有点像
> data.apply(lambda v: v['nameA']+',Q' if v['con'] == 'QX' else v['nameB'] + ',Q' if v['con'] == 'XQ' else v['nameA']+ ',Q,' + v['nameB'] + ',Q', axis=1)
0 a,Q
1 b,Q
2 z,Q
3 o,Q
4 e,Q
5 f,Q,r,Q
dtype: object