Reputation: 327
Here an example:
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
I need to edit "file" based on prop1, prop2, prop3 value like this:
file
filename1:prop1
filename2:prop2
filename3:prop3
filename4:prop1
filename5:prop2
Upvotes: 2
Views: 76
Reputation: 30920
if the values are str type you should use better bool
type since you are using more memory unnecessarily
you can use eval to convert to bool and a for loop + mask to check:
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
Upvotes: 1