根据 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
我想根据另一列中的值在 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