Сравните два идентификатора Dataframes ID и столбцы DateTime - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть два кадра данных: - df1: -

DateTime                           ID  Amount
2019-09-21 00:01:00.739000+05:30    2   10
2019-09-21 00:03:01.265000+05:30    3   20
2019-09-21 00:03:01.265000+05:30    4   30

df2: -

DateTime                            ID   Amount
2019-09-21 00:01:00.739000+05:30    3   10
2019-09-21 00:03:01.265000+05:30    5   20
2019-09-21 00:03:26.856000+05:30    6   30

Мне нужно сравнить df1 ['DateTime'] с df2 ['DateTime']в отношении идентификаторов. Итак, мне нужна сумма столбцов df2 ['Amount'], когда df2 ['DateTime']

df1[df1['Added_DateTime'] > df2['Withdrawal_DateTime']]

и

df1.set_index(df1['Added_DateTime']).join(df2.set_index(df2['Withdrawal_DateTime'])).reset_index(drop=True)

У меня естьтакже пытался изменить значения DateTime в TimeStamp, но он не работает, показывая ошибку

Я ожидаю, что выход будет: -

ID Amount df1_DateTime df2_Amount.sum()
3   10

1 Ответ

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

Мы можем использовать DataFrame.merge, чтобы получить фрейм данных с соответствующими идентификаторами, а затем отфильтровать по условию DateTime и получить сумму:

#df1=df1.reset_index() #if Datetime is the index
#df1['DateTime']=pd.to_datetime(df1['DateTime']) #to convert to datetime
#df2=df2.reset_index() #if Datetime is the index
#df2['DateTime']=pd.to_datetime(df2['DateTime'])  #to convert to datetime
df_2=df2.add_suffix('_2')
df=df1.merge(df_2,left_on='ID',right_on='ID_2',how='inner')
print(df)

Вывод DataFrame

                          DateTime  ID  Amount  \
0 2019-09-21 00:03:01.265000+05:30   3      20   

                        DateTime_2  ID_2  Amount_2  
0 2019-09-21 00:01:00.739000+05:30     3        10 

Получение суммы Amount_2

df.loc[df['DateTime_2']<df['DateTime'],'Amount_2'].sum()

Вывод:

10

Если вам нужно рассчитать сумму по ID, вы можете использовать:

df[df['DateTime_2']<df['DateTime']].groupby('ID')['Amount_2'].sum()

Выход:

10
...