У меня есть фрейм данных со многими двоичными столбцами, которые указывают, упоминалось ли конкретное название продукта.Я хочу создать один столбец, в котором перечислены все эти конкретные названия продуктов с 1 для этой строки.
Для простоты предположим, что это мой фрейм данных:
df = pd.DataFrame({'Name': [1,0,0], 'Another Name': [0,1,1], 'Different Name':[0,0,1]})
Я хочу создатьэтот столбец:
0 ['Name']
1 ['Another Name']
2 ['Another Name','Different Name']
Мой мыслительный процесс состоит в том, чтобы перебирать каждую строку, и, если для любого имени есть 1, добавьте это в список для столбца
namelist = list()
if df['Name']==1:
namelist.append("Name")
else if df['Another Name']==1:
namelist.append("Another Name")
else if df['Different Name']==1:
namelist.append("Different Name")
Ноэто не будет держать список, специфичный для строки.Предложения о том, как это сделать?
Мое решение: я использовал логику решения Дж. Андерсона, но мне нужно было указать интересующие столбцы, а не все в кадре данных.Я уверен, что есть лучший способ сделать это, чем я, что я и сделал, но вот что я сделал:
df['Name']=df['Name'].replace({1:'Name',0:''})
df['Another Name']=df['Another Name'].replace({1:'Another Name',0:''})
df['Different Name']=df['Different Name'].replace({1:'Different Name',0:''})
df['Product Name']=df['Name'] + df['Another Name'] + df['Different Name']