У меня есть два кадра данных:
df1 = pd.DataFrame([['ida', 1], ['idb', 2], ['idc', 3]], columns=['A','B'])
df2 = pd.DataFrame([['idb', 20], ['ida', 10], ['idb', 21], ['idb', 22]], columns=['A', 'C'])
, и я хотел бы добавить данные из df2
в df1
в список :
df3 =
|A B C
---------------
0 |ida 1 [10]
1 |idb 2 [20, 21, 22]
2 |idc 3 NaN
Я могу объединить оба кадра:
df1.merge(df2, how='left')
A B C
0 ida 1 10.0
1 idb 2 20.0
2 idb 2 21.0
3 idb 2 22.0
4 idc 3 NaN
Но тогда как мне «объединить» совпадающие строки?Кроме того, на самом деле df2 намного больше, и я хочу скопировать только столбцы «C», а не столбцы «D», «E», «F» ...
В качестве альтернативы, я могу создать новыйстолбец в df1, а затем итерируйте по df2, чтобы заполнить его:
for n, row in df2.iterrows():
idx = df1.index[row['A'] == df1['A']]
for i in idx: # hopefully only 1 or 0 values in idx
<assign value> df1.at[i, 'A'] = ???
Причина, по которой я хочу получить списки, состоит в том, что существует гибкое количество значений 'C', и позже я хочу вычислить среднее значение,стандартное отклонение, ...
Правка: опечатка