我有这个数据框deputados_sites:
deputados_sites.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 512 entries, 0 to 511
Data columns (total 3 columns):
Nome 512 non-null object
Num_referencia 512 non-null object
Link 512 non-null object
dtypes: object(3)
memory usage: 12.1+ KB
另一个eleitos_d:
eleitos_d.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 513 entries, 23 to 26219
Data columns (total 7 columns):
Estado 513 non-null object
Cargo 513 non-null object
Nome_candidato 513 non-null object
CPF 513 non-null int64
Nome_urna 513 non-null object
Partido 513 non-null object
Situacao 513 non-null object
dtypes: int64(1), object(6)
memory usage: 32.1+ KB
我将数据框与名称合并:
sites_eleitos = pd.merge(deputados_sites, eleitos_d, left_on='Nome', right_on='Nome_urna')
sites_eleitos.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 341 entries, 0 to 340
Data columns (total 10 columns):
Nome 341 non-null object
Num_referencia 341 non-null object
Link 341 non-null object
Estado 341 non-null object
Cargo 341 non-null object
Nome_candidato 341 non-null object
CPF 341 non-null int64
Nome_urna 341 non-null object
Partido 341 non-null object
Situacao 341 non-null object
dtypes: int64(1), object(9)
memory usage: 29.3+ KB
但我也想创建一个未找到的数据框。 &#34; Nome&#34; deputados_sites中未在&#34; Nome_urna&#34;中找到的列eleitos_d中的列
在eleitos_d上找到的deputados_sites上显示内容。我正在使用。 Python3和pandas
拜托,有没有人知道这样做的命令?
答案 0 :(得分:2)
我认为您需要outer
加入merge
中的参数indicator=True
,然后仅针对left_only
,deputados_sites
中的行过滤right_only
eleitos_d
的{{1}}和both
中的行DataFrame
和sites_eleitos = pd.merge(deputados_sites,
eleitos_d,
left_on='Nome',
right_on='Nome_urna',
how='outer',
indicator=True)
ldf = sites_eleitos.query("_merge == 'left_only'").drop('_merge',axis=1)
rdf = sites_eleitos.query("_merge == 'right_only'").drop('_merge',axis=1)
bdf = sites_eleitos.query("_merge == 'both'").drop('_merge',axis=1)
:
ldf = sites_eleitos[sites_eleitos['_merge'] == 'left_only'].drop('_merge',axis=1)
rdf = sites_eleitos[sites_eleitos['_merge'] == 'right_only'].drop('_merge',axis=1)
bdf = sites_eleitos[sites_eleitos['_merge'] == 'both'].drop('_merge',axis=1)
或query
:
min. number