Это мой первый вопрос на StackOverflow, так что дайте мне знать, если я должен сформулировать что-нибудь иначе ...Заменить некоторые конкретные значения в столбце панд в зависимости от условий в другом столбце
Я хочу заменить некоторые значения в панд Столбец Dataframe, зависящий от состояния, связанного со значениями в другом столбце, но оставьте исходные значения, если условие False. Например:
import pandas as pd
df=pd.DataFrame({'col1':['A','B','C','B'], 'col2':['z','x','x','x']},
columns=['col1','col2'])
df =
col1 col2
0 A z
1 B x
2 C x
3 B x
Скажем, я хочу, чтобы заменить значения в col2 на «Q», если значение в col1 является «B» или «C», но оставить исходные значения («Z», 'х '), если значение в col1 не равно B или C. На самом деле у меня гораздо больше DataFrame с сотнями уникальных значений в col1 и вы хотите заменить значения в col2 примерно на 20 из них.
Мое текущее решение для создания словаря, используя col1 в качестве ключей и col2 как значения, а затем:
dict1.update({'B':'q'})
df[col2] = df[col1].map(dict1)
Но этот трюк работает только тогда, когда значения в двух столбцах коррелируют точно (или, если значения в col1 являются уникальный).
Так что мне было интересно, есть ли более элегантное решение. Таким образом, замените значение в col2, если col1 соответствует определенному условию, иначе оставите исходное значение.
маски ФР 'df.loc [DF [ 'col1'] == 'B', 'col2'] = DF ['col1']. map (dict1) 'более динамического метода' df.loc [df ['col1']. isin (dict1.keys()), 'col2'] = df ['col1']. map (dict1) ' – EdChum
ok, на самом деле у меня есть целая куча значений в col1, для которых я хочу заменить значение в col2, так как же он будет работать тогда? Я обновлю вопрос – BartDur
Если вы создадите диктовку новых сопоставлений, тогда мой ответ все равно будет работать нормально – EdChum