我有两个数据帧:
上一页:
Time FO_SYMBOL TOTAL_VOLUME
0 14:20:41 ACC 6778.0
1 14:56:57 ADANIENT 4314.0
2 09:19:12 AUROPHARMA 1295.0
3 15:09:14 BAJAJ-AUTO 8339.0
4 09:19:12 HCLTECH 1431.0
5 09:19:12 HEROMOTOCO 1551.0
6 13:53:02 ULTRACEMCO 8284.0
df:
Time FO_SYMBOL TOTAL_VOLUME
0 14:20:41 ACC 6778.0
1 14:56:57 ADANIENT 4314.0
2 09:19:12 AUROPHARMA 1295.0
3 15:09:14 BAJAJ-AUTO 8339.0
4 09:19:12 HCLTECH 1431.0
5 09:19:12 HEROMOTOCO 1551.0
6 13:53:02 ULTRACEMCO 8284.0
7 14:55:12 BHEL 8114.0 <<= NEW ROW
8 14:55:12 BHEL 8120.0 <<= NEW ROW
我想比较两个dataframe并找到不同的新行。我希望我的输出如下:
结果:
0 14:55:12 BHEL 8114.0 <<= NEW ROW
1 14:55:12 BHEL 8120.0 <<= NEW ROW
目前我使用的代码如下:
indexes = (df != prev_df).any(axis=1)
new_df = df.loc[indexes]
但是当在df
中填充新行时,我得到的错误如下:
只能比较标记相同的数据帧对象
请帮忙。
您可以conat
和drop_duplicates
:
cols=prev_df.columns.intersection(df.columns).tolist()
pd.concat([df, pd.concat([prev_df]*2)]).drop_duplicates(cols, keep=False)
Time FO_SYMBOL TOTAL_VOLUME
7 14:55:12 BHEL 8114.0
8 14:55:12 BHEL 8120.0
试试这个
df3 = pd.merge(df,prev_df,on='a',how='left',indicator=True)
df3[df3['_merge']=='left_only']
df3.drop(['_merge'],axis=1,inplace=True)
Time FO_SYMBOL TOTAL_VOLUME
7 14:55:12 BHEL 8114.0
8 14:55:12 BHEL 8120.0