Если я правильно понимаю, вы просто хотите заменить значение для столбца в тех строках, соответствующих заданному условию (т. Е. Где A
столбец принадлежит определенной группе, здесь с единственным значением 'a'
).Следующее должно сделать трюк:
import pandas as pd
group = ['a']
df = pd.DataFrame({"A": ['a','b','a','a','c'], "B": [None,None,None,None,None]})
print(df)
df.loc[df['A'].isin(group),'B'] = 'okay'
print(df)
Здесь мы используем фильтр .loc
, который просто возвращает представление существующего фрейма данных.
СначалаАргумент (df['A'].isin(group)
) фильтрует те строки, которые соответствуют заданному критерию.Обратите внимание, что вы можете использовать оператор равенства (==
), но не оператор in
и, следовательно, вместо него следует использовать .isin()
).
Второй аргумент выбирает только столбец «B».Затем вы просто присваиваете желаемое значение (которое является константой).
Вот вывод:
A B
0 a None
1 b None
2 a None
3 a None
4 c None
A B
0 a okay
1 b None
2 a okay
3 a okay
4 c None
Если вы хотите заняться чем-то более сложным, вы можете сделать следующее:
import pandas as pd
group = ['a', 'b']
df = pd.DataFrame({"A": ['a','b','a','a','c'], "B": [None,None,None,None,None]})
df.loc[df['A'].isin(group),'B'] = "okay, it was " + df['A']+df['A']
print(df)
Что дает вам:
A B
0 a okay, it was aa
1 b okay, it was bb
2 a okay, it was aa
3 a okay, it was aa
4 c None