如何获得具有不同列名但包含相似类型数据的2个pandas数据帧的差异或增量。
以下:
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应该在这些货币对上产生输出。
答案 0 :(得分:1)
给出两列:
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
选择df1.loc
行:
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