快速Pandas问题:
我通过在一个系列上使用apply来清理数据帧的各个列中的值:
# For all values in col 'Rate' over 1, divide by 100
df['rate'][df['rate']>1] = df['rate'][df['rate']>1].apply(lambda x: x/100)
当选择条件很简单时,例如df['rate']>1
,这是很好的。但是,当您开始添加多个选择条件时,这会变得非常长:
df['rate'][(df['rate']>1) & (~df['rate'].isnull()) & (df['rate_type']=='fixed) & (df['something']<= 'nothing')] = df['rate'][(df['rate']>1) & (df['rate_type']=='fixed) & (df['something']<= 'nothing')].apply(lambda x: x/100)
最简洁的方法是: 1.从DataFrame中分离出一列(作为系列) 2.将函数应用于系列的项目3.使用修改后的系列更新DataFrame
我试过使用df.update()
,但似乎不起作用。我也尝试过使用系列作为选择器,例如isin(Series)
,但我也不能让它工作。
谢谢!
https://stackoverflow.com/questions/56799308
复制相似问题