Примечание: для простоты я использую игрушечный пример, потому что копирование/вставка кадров данных затрудняет переполнение стека (пожалуйста, дайте мне знать, если есть простой способ сделать это).
Есть ли способ объединить значения из одного кадра данных в другой, не получая столбцы _X, _Y? Я хотел бы, чтобы значения в одном столбце заменяли все нулевые значения другого столбца.
df1:
Name Nonprofit Business Education
X 1 1 0
Y 0 1 0 <- Y and Z have zero values for Nonprofit and Educ
Z 0 0 0
Y 0 1 0
df2:
Name Nonprofit Education
Y 1 1 <- this df has the correct values.
Z 1 1
pd.merge(df1, df2, on='Name', how='outer')
Name Nonprofit_X Business Education_X Nonprofit_Y Education_Y
Y 1 1 1 1 1
Y 1 1 1 1 1
X 1 1 0 nan nan
Z 1 1 1 1 1
В предыдущем посте я пробовал комбинировать_F_FIRST и DropNA(), но они не делают работу.
Я хочу заменить нули в df1 значениями в df2. Кроме того, я хочу, чтобы все строки с одинаковыми именами были изменены в соответствии с df2.
Name Nonprofit Business Education
Y 1 1 1
Y 1 1 1
X 1 1 0
Z 1 0 1
(необходимо уточнить: значение в столбце "Бизнес", где имя = Z, должно равняться 0.)
Мое существующее решение делает следующее: я делаю подмножество на основе имен, существующих в df2, а затем заменяю эти значения правильными значениями. Тем не менее, я хотел бы менее хакерский способ сделать это.
pubunis_df = df2
sdf = df1
regex = str_to_regex(', '.join(pubunis_df.ORGS))
pubunis = searchnamesre(sdf, 'ORGS', regex)
sdf.ix[pubunis.index, ['Education', 'Public']] = 1
searchnamesre(sdf, 'ORGS', regex)