根据 df 中每天更改的列在 df 中执行计算

perform calculation in df based on changing columns daily in df

我想根据另一列中的值在 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 的行中执行此计算 and/or 快速删除列有 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