от
У меня два ДФС:
df1 = pd.DataFrame({'name':['foo Bar','Bar Bar','Foo Bar','jim','john','mary','jim'],
                   'code1':[np.nan,np.nan,'432',np.nan,np.nan,np.nan,'563']})

df1

    name    code1
0   foo     NaN
1   Bar     NaN
2   Foo     432
3   jim     NaN
4   john    NaN
5   mary    NaN
6   jim     563


df2 = pd.DataFrame({'xyz':['foo','Bar','Bar','abc'],
                   'code2':['123','345','456','234']})

df2

    xyz code2
0   foo 123
1   Bar 345
2   Bar 456
3   abc 234
Есть отсутствующие значения в столбце
code1
в df1. Я не совпадают, я просто хочу, чтобы добавить некоторые дополнительные коды в этой колонке. Так у меня df2, с колонной
code2
. Я хочу взять этих четырех кодов, и добавить их в четырех клетках в df1. Мой ожидаемый выход это:
df3

    name    code
0   foo     123 # new code
1   Bar     345 # new code
2   Foo     432 # code unchanged
3   jim     456 # new code 
4   john    234 # new code
5   mary    NaN # not important
6   jim     563 # code unchanged
Что я до сих пор пробовал? Я спас кодов с df2
codes = df2['code2']

codes

0    123
1    345
2    456
3    234
Name: code, dtype: object
Потом процеживают df1 иметь значение null коды только так, как я не хочу, чтобы заменить коды, которые присутствуют, и так как у меня только четыре новые коды для вставки, у меня есть первые четыре строки df1 и присвоены новые коды к ним:
mask = df1['code1'].isnull()

df1['code1'][mask][:4] = codes
Однако ничего не случилось с df1. Еще есть ньанс. Некоторые другие вещи, которые я пробовал, получая значения, но не работает:
df1['code1'][mask][:4].values = codes.values
И тогда я просто кончились идеи. Не работает
df1['code1'][mask][list(range(4))] = codes.values

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...