我有以下数据框:
d = {'col1': [1, "Avoid", 3, "Avoid"], 'col2': ["AA", "BB", "Avoid", "Avoid"]}
df = pd.DataFrame(data=d)
df
col1 col2
0 1 AA
1 Avoid BB
2 3 Avoid
3 Avoid Avoid
我必须有条件地将 col1 和 col2 连接成 col3。条件:
- 只连接 2 列,只要它们都不是避免。
- 如果col1和col2中的任何一个是Avoid,col3也将等于Avoid。
- 执行连接时,需要在col3 的列值之间添加"& "。例如,col3 的第一行将是"1 & AA"。
最终结果应该如下所示:
col1 col2 col3
0 1 AA 1 & AA
1 Avoid BB Avoid
2 3 Avoid Avoid
3 Avoid Avoid Avoid
如何在不处理 for 循环的情况下执行此操作?
最佳答案
在纯 python 中对字符串运行列表理解:
out = [f"{l}&{r}"
if 'Avoid' not in {l, r}
else 'Avoid'
for l, r in zip(df.col1, df.col2)]
df.assign(col3 = out)
col1 col2 col3
0 1 AA 1&AA
1 Avoid BB Avoid
2 3 Avoid Avoid
3 Avoid Avoid Avoid
关于python - 如何在 Python Pandas Dataframe 中有条件地连接 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73715912/