#python #pandas
Вопрос:
Фрейм данных, который у меня сейчас есть, выглядит следующим образом
In[1]: df
Out[1]:
index yesterday today tomorrow
1 apple_1 banana_3 cherry_4
2 pear_2 apple_4 blueberry_1
3 kiwi_3 orange_6 banana_2
4 apple_1 melon_3 banana_4
Я хочу записать все яблоки и поместить их в другую колонку/серию, например
index yesterday today tomorrow apple
1 apple_1 banana_3 cherry_4 apple_1
2 pear_2 apple_4 blueberry_1 apple_4
3 kiwi_3 orange_6 banana_2 nan
4 apple_1 melon_3 banana_4 apple_2
- IDK, в каком столбце будет содержаться яблоко
- ИДК, что еще с яблоком
Спасибо за помощь!
Ответ №1:
Попробуйте с startswith
помощью затем where
маски затем как нан и сделайте ffill
df['new'] = df.where(df.apply(lambda x : x.str.startswith('apple'))).ffill(1).iloc[:,-1]
df
Out[149]:
yesterday today tomorrow new
index
1 apple_1 banana_3 cherry_4 apple_1
2 pear_2 apple_4 blueberry_1 apple_4
3 kiwi_3 orange_6 banana_2 NaN
4 apple_1 melon_3 banana_4 apple_1
Комментарии:
1. Выглядит хорошо! только один вопрос, что делать, если в исходном кадре данных есть значения nan? это дает мне ошибки, например, Можно использовать доступ .str только со строковыми значениями!
2. @IRK df.где(df.fillna(«).подать заявку(лямбда x : x.str.начинается с(«яблоко»)). ffill(1).iloc[:,-1]