Определение функции для любого столбца в DF - PullRequest
0 голосов
/ 25 апреля 2018

В моем примере я хотел бы убрать «C» и «D» в Column1, поскольку это соответствует «Erase» в Column2.Я пытаюсь сделать это расширяемым для любых будущих столбцов, которые я мог бы использовать в качестве альтернативы Column1.

import pandas as pd

df = {  'Column1': ["A","B","C","D","E"],
        'Column2': ["Keep","Keep","Erase","Erase","Keep"]}
df = pd.DataFrame(df, columns=['Column1','Column2'])



def func(any_column):
    df[any_column][df['Column2'].isin(['Erase'])] = ""
    return any_column

df['Column1'] = df['Column1'].map(func)
df

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

попробуй

df.Column1 = df.Column1.where(df.Column2 != 'Erase', None)
0 голосов
/ 25 апреля 2018

Цикл в вашей DF может работать: вы можете добавить новые столбцы в вашей переменной Future_columns или найти все столбцы в вашей DF.вывод Y else Z

import numpy as np
Future_columns=['Column1','Column3']
for x in range(len(Future_columns)):
    df['%s' %(Future_columns[x])]=np.where(df.Column2=="Erase","",df['%s' %(Future_columns[x])]) 
    df.head() 

Или автоматизировать этот фрагмент кода, исключая «Столбец1», используя список заголовков столбцов:

import numpy as np
all_columns=list(df)
all_columns.remove('Column2')
future_columns=all_columns

for x in range(len(Future_columns)):
    df['%s' %(Future_columns[x])]=np.where(df.Column2=="Erase","",df['%s' %(Future_columns[x])]) 
    df.head()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...