Отредактируйте значение в кадре данных pandas на основе значения другого столбца - PullRequest
2 голосов
/ 04 октября 2019

Вот пример:

df = pd.DataFrame({
'file':['filename1','filename2','filename3','filename4','filename5'],
'prop1':['True','False','False','True','False'],
'prop2':['False','True','False','False','True'],
'prop3':['False','False','True','False','False']
})
        file  prop1  prop2    prop3
0  filename1   True  False    False
1  filename2  False   True    False
2  filename3  False  False     True
3  filename4   True  False    False
4  filename5  False   True    False

Мне нужно отредактировать «файл» на основе значений prop1, prop2, prop3 следующим образом:

           file
filename1:prop1
filename2:prop2
filename3:prop3
filename4:prop1
filename5:prop2

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Использование idxmax до axis=1

df['file'] = df.file + ':' + df.filter(like='prop').idxmax(1)

             file
0  filename1:prop1
1  filename2:prop2
2  filename3:prop3
3  filename4:prop1
4  filename5:prop2
1 голос
/ 04 октября 2019

если значения имеют тип str, лучше использовать тип bool, так как вы используете ненужную память больше

вы можете использовать eval для преобразованиядля bool и a for loop + маска для проверки:

for key in df.columns[1:]: 
    df[key]=df[key].apply(lambda x:eval(x))
    df['file'].mask(df[key],df['file']+':'+ key,inplace=True)
print(df)

              file  prop1  prop2  prop3
0  filename1:prop1   True  False  False
1  filename2:prop2  False   True  False
2  filename3:prop3  False  False   True
3  filename4:prop1   True  False  False
4  filename5:prop2  False   True  False

print(df['prop1'])

0     True
1    False
2    False
3     True
4    False
Name: prop1, dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...