python - 根据条件连接两个 Pandas 列

标签 python pandas numpy

我有两列,我正在尝试根据其中一列是否为空值来创建新的一列。我有以下示例,我尝试使用 np.where() 函数,但它似乎不起作用。

import pandas as pd 
import numpy as np 

# DF 1
a = pd.DataFrame([1,'nan',2],columns=['a1'])
# DF 2
b = pd.DataFrame(['hola','hola','hola'],columns=['b1']) 
# New Column
b['b2'] = np.where(a['a1'].astype(str) != 'nan', b['b1'] + a['a1'].astype(str)) 

新列“b2”的结果应为:

hola1  
hola 
hola2

np.where 函数也没有像 else 选项这样的选项,所以我不知道如何包含它。我感谢您的帮助!

最佳答案

您需要“同步”ab 数据帧以进行成对比较(可能与 pd.concat ):

b['b2'] = pd.concat([a.replace({'nan': ''}), b], axis=1).apply(lambda x:x['b1'] + str(x['a1']), axis=1)
print(b)

     b1     b2
0  hola  hola1
1  hola   hola
2  hola  hola2

关于python - 根据条件连接两个 Pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75086665/

相关文章:

python - 这个递归函数能否变成具有类似性能的迭代函数?

python - 计算协方差矩阵——numpy.cov 和 numpy.dot 之间的区别?

python - Pandas 日期计算

python - xlwt.Style.EasyXFCallerError : section 'fill' is unknown

python - 在Python中: How do I convert a user input into a piece of code?

python - 使用两个 pandas DataFrame 将 NaN 值替换为实际值

python - Pandas 系列过滤

python - 在python中将两个变量放入for-in循环中是什么意思

python - ndimage 的 center_of_mass 用于计算高斯峰的位置

python - AWS Glue - 如何使用 BOTO3 更改 Glue Catalog 表中的列名?