我正在使用pandas.merge
来基于两个列的值连接两个数据框。我检查了两个数据框中的数据类型,它们是相同的。此外,对于两个数据集中的两列中的每列,我都计算了集合之间的交集,并且它肯定不是空的。但是,合并无法正常工作,我只是找不到原因。
我将在此处发布一段代码,尽管我没有最小的数据集来再现它,但是数据太大。有数据集df
和q0
,它们都有列permno
date
,我想根据它们进行合并。
# just to make sure the data types are the same
df['permno'] = df['permno'].astype(int)
q0['permno'] = q0['permno'].astype(int)
df['date'] = df['date'].dt.to_period('D')
q0['date'] = q0['date'].dt.to_period('D')
print(df.dtypes, q0.dtypes)
q0
的出站口:
date period[D]
permno int64
sum float64
dtype: object
df
的输出:
permno int64
date period[D]
sic int64
prc float64
...
要确保的另一步骤是采用列值之间的交集:
print(len(set(df.date.unique())&set(q0.date.unique())))
print(len(set(df.permno.unique())&set(q0.permno.unique())))
输出:
9154
5925
合并:
df = pd.merge(df, q0, on=['permno', 'date'], how='inner')
print(len(df))
输出:
0
我尝试了很多次,但是我不知道为什么它现在不起作用。