根据每天在df中的列变化在df中进行计算。

问题描述 投票:0回答:1

我想在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运算符,因为有时快速删除列,例如每行都是空的,因此删除,所以你只有快速添加列,反之亦然。

python pandas dataframe operators
1个回答
0
投票

你可以试试下面的方法。这不是一个最好的解决方案,如果你的数据集,如果大。

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
© www.soinside.com 2019 - 2024. All rights reserved.