我想在pandas中根据另一列中的值进行计算,这个问题之前已经讨论过了,但是我的问题是我的列每天都会出现或被删除,因为我的值每天都在变化,即如果列中有一个值,那么该列仍然在df中,否则该列被删除。
df = pd.DataFrame({'a': [1, 2],
'b': [0.5, 0.75]}
'fast add': ['ADD', '')
'fast del': ['', 'DEL'])
df['move needed'] = df['a'] / df['b']
我只想在有ADD为快速添加列和DEL为快速删除列的行中执行这个计算,我不能在np.where中使用OR运算符,因为有时快速删除列,例如每行都是空的,因此删除,所以你只有快速添加列,反之亦然。
你可以试试下面的方法。这不是一个最好的解决方案,如果你的数据集,如果大。
import pandas as pd
data = {'a': [1, 2,3],
'b': [0.5, 0.75,1],
'fast add': ['ADD', '',''],
'fast del': ['', 'DEL','']}
df = pd.DataFrame(data)
fast_add_check = list(df.columns).count('fast add') # Check if column exist
fast_del_check = list(df.columns).count('fast del') # Check if column exist
if fast_add_check> 0 and fast_del_check > 0:
df.loc[df['fast add'] == 'ADD', 'move needed'] = df['a']/df['b']
df.loc[df['fast del'] == 'DEL', 'move needed'] = df['a']/df['b']
elif fast_add_check> 0 and fast_del_check == 0:
df.loc[df['fast add'] == 'ADD', 'move needed'] = df['a']/df['b']
elif fast_add_check == 0 and fast_del_check > 0:
df.loc[df['fast del'] == 'DEL', 'move needed'] = df['a']/df['b']
df['move needed'].fillna('', inplace=True) #treat nan values as needed