虽然键的数据类型相同,但熊猫合并无法正常工作

时间:2019-04-18 10:59:41

标签: python-3.x pandas merge

我正在使用pandas.merge来基于两个列的值连接两个数据框。我检查了两个数据框中的数据类型,它们是相同的。此外,对于两个数据集中的两列中的每列,我都计算了集合之间的交集,并且它肯定不是空的。但是,合并无法正常工作,我只是找不到原因。

我将在此处发布一段代码,尽管我没有最小的数据集来再现它,但是数据太大。有数据集dfq0,它们都有列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

我尝试了很多次,但是我不知道为什么它现在不起作用。

0 个答案:

没有答案