我有一个包含 28 列的 DataFrame。我想有条件地将 2 列组合在一起以创建一个新列,当我操作数据并引入其他数据集时,它将成为我的键。我将不得不在每个数据集中再次创建 key 。
我想将列“CN”和“ON”连接在一起。有时'ON'是空白的或者只有一个空格,所以我需要先修剪它。从逻辑上讲,我正在尝试执行以下操作。
如果 Trim('ON') 为空,则 'CN ON' = 'CN' ELSE 'CN ON' = 'CN'+'-'+'ON'
数据框
CN ON POC
0 W1 Name1
1 Z2 Name3
2 B3 YY Name1
3 W1 A2 Name4
import pandas as pd
df = pd.DataFrame({'CN': ['W1', 'Z2', 'B3', 'W1'],
'ON': ['', ' ', 'YY', 'A2'],
'POC': ['Name1', 'Name3', 'Name1', 'Name4']
})
期望的结果
CN ON CN ON POC
0 W1 W1 Name1
1 Z2 Z2 Name3
2 B3-YY B3 YY Name1
3 W1-A2 W1 A2 Name4
import pandas as pd
df = pd.DataFrame({'CN ON': ['W1','Z2','B3-YY','W1-A2'],
'CN': ['W1', 'Z2', 'B3', 'W1'],
'ON': ['', ' ', 'YY', 'A2'],
'POC': ['Name1', 'Name3', 'Name1', 'Name4']
})
我找到了一些类似的问题和答案,但我无法完全解决问题。
这是我目前所拥有的。我无法弄清楚如何修剪和检查该字段是否为空白。它目前无法正常工作,我觉得我碰壁了。
import numpy as np
df['CN ON'] = df.apply(lambda r: (r['CN'] if np.where(df['ON'].applyman(lambda x: x == '')) else r['CN'] + '-' + r['ON'])
如有任何指导或帮助,我们将不胜感激!
最佳答案
我会做字符串求和
(df.CN+ '-' + df.ON).str.strip('- ')
Out[98]:
0 W1
1 Z2
2 B3-YY
3 W1-A2
dtype: object
关于python - DataFrame 有条件地组合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59081004/