Python: как сделать операцию между двумя фреймами данных? - PullRequest
0 голосов
/ 28 мая 2018

У меня есть 2 кадра данных df1 и df2, содержащие информацию об одних и тех же элементах, но некоторые элементы в df1 не могут появиться в df2.

Для istance:

df1 
     id count
0     5  124
1     3  136
2     7  12
3     2  345 


df2 
     id count
0     5  65
1     7  3

Я хотел бы вычислить дробь df1['count']/df2['count'] только для существующих элементов и 0 в противном случае

df3 
     id count
0     5  1.91
1     3  0
2     7  4
3     2  0 

1 Ответ

0 голосов
/ 28 мая 2018

Используйте map для нового Series, который делится на div и последний для несоответствующего id создаются NaN s, которые заменяются наfillna:

df1['count'] = df1['count'].div(df1['id'].map(df2.set_index('id')['count'])).fillna(0)
print (df1)
   id     count
0   5  1.907692
1   3  0.000000
2   7  4.000000
3   2  0.000000

Деталь :

print (df1['id'].map(df2.set_index('id')['count']))
0    65.0
1     NaN
2     3.0
3     NaN
Name: id, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...