简体   繁体   English

我可以在没有 for 循环的情况下将 function 应用于 Pandas dataframe 中的多个列吗?

[英]Can I apply a function to multiple columns in Pandas dataframe without a for loop?

Is there a way to apply a function to multiple columns in a Pandas dataframe without a loop?有没有办法在没有循环的情况下将 function 应用于 Pandas dataframe 中的多个列? For example, give this dataframe:例如,给出这个 dataframe:

df = pd.DataFrame({'id': [1,2,3,4,5,6,7,8,9,10],
                   'val1': [2,2,np.nan,np.nan,4,1,np.nan,np.nan,np.nan,2],
                   'val2': [7,0.2,5,8,np.nan,1,0,np.nan,1,1],
                  })
display(df)

在此处输入图像描述

If I want to operate on both val1 and val2 columns, I can do the following.如果我想同时对val1val2列进行操作,我可以执行以下操作。 Is there a one-liner to replace the for-loop?是否有一个单行来替换 for 循环?

f = lambda x: 'ERR' if x < 5 else x
cols = ['val1', 'val2']
for c in cols:
    df[c] = df[c].apply(f) 
display(df)

在此处输入图像描述

applymap

df.assign(**df[cols].applymap(f))

   id val1 val2
0   1  ERR  7.0
1   2  ERR  ERR
2   3  NaN  5.0
3   4  NaN  8.0
4   5  ERR  NaN
5   6  ERR  ERR
6   7  NaN  ERR
7   8  NaN  NaN
8   9  NaN  ERR
9  10  ERR  ERR

mask

df.assign(**df[cols].mask(df[cols] < 5, 'ERR'))

   id val1 val2
0   1  ERR  7.0
1   2  ERR  ERR
2   3  NaN  5.0
3   4  NaN  8.0
4   5  ERR  NaN
5   6  ERR  ERR
6   7  NaN  ERR
7   8  NaN  NaN
8   9  NaN  ERR
9  10  ERR  ERR

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 pandas dataframe在多列上快速应用功能 - pandas dataframe fast apply function on multiple columns Pandas在多列上的数据帧上应用函数 - Pandas apply function on dataframe over multiple columns Pandas DataFrame 将 function 应用于多列和 Z78E6221F6393D1356DZ681DB398F14CE - Pandas DataFrame apply function to multiple columns and output multiple columns 在pandas数据帧中的apply函数中使用三元运算符,而不对列进行分组 - Use ternary operator in apply function in pandas dataframe, without grouping columns 如何使用 grouby 应用涉及 pandas dataframe 的多个列的多个函数? - How can I apply multiple functions involving multiple columns of a pandas dataframe with grouby? 是否将函数应用于pandas数据框的每一列而没有for循环? - Apply function to every column of pandas dataframe without for loop? 在没有 for 循环的情况下,将包含 if 的函数应用于 pandas 中数据帧的每一行 - Apply a function including if to each row of a dataframe in pandas without for loop 如何将函数同时应用于pandas数据框中的多个列 - how to apply a function to multiple columns in a pandas dataframe at one time 熊猫数据框在创建多个列的列上应用功能 - pandas dataframe apply function over column creating multiple columns pandas 将用户定义的 function 应用于多列上的分组 dataframe - pandas apply User defined function to grouped dataframe on multiple columns
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM