Сравните рамки данных разных размеров и создайте новые, если условие выполнено - PullRequest
1 голос
/ 01 ноября 2019

Мне нужна помощь, чтобы выяснить следующую проблему:

У меня есть два (2) кадра данных разных размеров. Мне нужно сравнить значения и, если условие выполнено, заменить значения в Dataframe 1.

Если значения для Material и Char в Dataframe 1 равны = "Y", мне нужно получить "Обязательное или необязательное значение из Dataframe 2. Если это Обязательное, то я заменяю «Y» на «Y_REQD», в противном случае, если это Необязательно, то заменяю «Y» на «Y_OPT».

Я использовал дляциклы, но теперь код становится слишком сложным, что намекает мне, что это не лучший способ.

Заранее спасибо.

enter image description here

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

В основном согласен с ответом @ WeNYoBen. Но чтобы сделать все правильно, dataframe2 необходимо пересмотреть, используя df.replace.

Короткая версия:

df1=df1.replace({'Y':'Y_'})+df2.replace({'Rqd': 'REQD', 'Opt': 'OPT'}).pivot(*df2.columns).reindex_like(df1).fillna('')

Длинная версия:

# break short into steps 
# 1. replace
df2 = df2.replace({'Rqd': 'REQD', 'Opt': 'OPT'})

# 2. pivot
df2 = df2.pivot(*df2.columns)

# 3. reindex
df2 = df2.reindex_like(df1)

# 4. fillna(cleanup df with string form)
df2 = df2.fillna('')

# 5. map on df1 and add up with df2
df1=df1.replace({'Y':'Y_'})+df2

Надеюсь, это поможет.

0 голосов
/ 01 ноября 2019

Это больше похоже на pivot проблему, тогда мы можем reindex датафрейм, тогда сумма

df1=df1.replace({'Y':'Y_'})+df2.pivot(*df2.columns).reindex_like(df1).fillna('')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...