выполнять вычисления в df на основе ежедневного изменения столбцов в df - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу выполнить расчет в pandas на основе значений в другом столбце. это было рассмотрено ранее, однако проблема, с которой я сталкиваюсь, заключается в том, что мои столбцы появляются или удаляются ежедневно, так как мои значения меняются ежедневно ie, если в столбце есть значение, то столбец остается в 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']

Я хочу выполнить этот cal c только в тех строках, которые имеют ADD для столбца быстрого добавления и / или DEL для столбца быстрого удаления. я не могу использовать оператор OR в np.where, потому что иногда столбец быстрого удаления, например, пуст для каждой строки и, следовательно, удаляется, поэтому у вас есть только быстрое добавление столбца и наоборот. надеюсь, что кто-то может помочь мне с этим

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете попробовать ниже. Это не лучшее решение, если ваш набор данных большой.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...