python - 如果满足条件,则使用自定义函数应用于 df 列

标签 python pandas

我有一个像这样的数据框

A   B
1   2
2   -
5   -
4   5

我想在 B 列上应用函数 func()(但如果传递 -,该函数会给出错误)。我无法修改 func() 函数。我需要类似的东西:

df['B']=df['B'].apply(func) 仅当值不等于 -

最佳答案

如果满足条件,则使用自定义函数应用于 df 列:

def func(a): 
    return a + 10  
#new pandas dataframe with four rows and 2 columns.  3rd row having a nan 
df = pd.DataFrame([[1, 2], [3, 4], [5, pd.np.nan], [7, 8]], columns=["A", "B"]) 
print(df) 
#coerce column named B to numeric
s = pd.to_numeric(df['B'], errors='coerce') 
#a mask has true for numeric rows, false for non numeric rows 
mask = s.notna() 
#mask 
print(mask) 
#run function named func across the B column 
df.loc[mask, 'B'] = s[mask].apply(func) 
print(df)

哪些打印:

   A    B
0  1  2.0
1  3  4.0
2  5  NaN
3  7  8.0

0     True
1     True
2    False
3     True

   A     B
0  1  12.0
1  3  14.0
2  5   NaN
3  7  18.0

关于python - 如果满足条件,则使用自定义函数应用于 df 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60832597/

相关文章:

Python 客户端 - C++ 服务器连接被拒绝错误

python - 切片系列面板

python - 计算pandas数据框中聚类数据的累加和

python - 散点矩阵的 Pandas 图例

python - 如何将Python字符串列表传递给sql查询

android - kivy buildozer 无法编译针对 python3 的应用程序

pandas - Pandas 中的子字符串列基于另一列

python - 选择多级索引数据框中的行,其索引值等于 pandas 中另一个数据框中的列

python 从文本文件中获取行+1

Python - smtplib - 保存为草稿 - Gmail