如何获得两个数据帧的差值或增量

2024-05-16 15:00:43 发布

您现在位置:Python中文网/ 问答频道 /正文

如何获取具有不同列名但包含相似数据类型的两个数据帧的差异或增量。你知道吗

示例如下:

df1 = 
     'Site ID'     'Band'
0     101           850
1     101           900
2     102           850
3     A01           850
4     A01           900
5     X12           900
6     B08           850

df2 =
     'SITENO'      'FREQ'
0     101           850
1     101           900
2     102           850
3     A01           850
4     A01           900
5     B08           900
6     Z99           850

现在我想要一个类似的输出

delta_df1 = 
     'Site ID'     'Band'
0     B08           850
1     X12           900

delta_df2 =
     'SITENO'      'FREQ'
0     B08           900
1     Z99           850

抱歉,我必须编辑发布的问题,我错过了上面的东西。还应该有一个站点具有相同的站点id/siteno,但具有不同的频带。delta应该在这些对的基础上产生一个输出。你知道吗


Tags: 数据idband站点sitedelta数据类型df1
1条回答
网友
1楼 · 发布于 2024-05-16 15:00:43

给定两列:

col1 = df1['Site ID']
col2 = df2['SITENO']

你可以找到与

In [107]: set(col1).difference(col2)
Out[107]: {'X12'}

可用于构建布尔选择掩码:

In [108]: col1.isin(set(col1).difference(col2))
Out[108]: 
0    False
1    False
2    False
3    False
4    False
5     True
Name: Site ID, dtype: bool

并使用df1.loc选择df1行:

In [109]: df1.loc[col1.isin(set(col1).difference(col2))] 
Out[109]: 
  Site ID  Band
5     X12   900

import pandas as pd

df1 = pd.read_table('data', sep='\s{2,}')
df2 = pd.read_table('data2', sep='\s+')

col1 = df1['Site ID']
col2 = df2['SITENO']

delta_df1 = df1.loc[col1.isin(set(col1).difference(col2))] 
print(delta_df1)

delta_df2 = df2.loc[col2.isin(set(col2).difference(col1))] 
print(delta_df2)

收益率

  Site ID  Band
5     X12   900

  SITENO  FREQ
5    B08   850
6    Z99   850

相关问题 更多 >