如何在pandas中混合多个数据帧得到ValueError

时间:2017-11-22 06:04:17

标签: python pandas merge

在Pandas中使用Anaconda3 Spyder我正在运行以下DataFrame Merge练习:

我有两个结构如下的数据框:

aur.columns
['Date','No','Clos'] 


bal.columns
['Date','No','Clos']

两者都是Pandas DataFrames

我需要将它们合并到另一个具有相同结构的数据框中:

merg.columns
['Date','No','Clos']

它们之间的共同列是'Date',因此Merge应该在此列中发生:

aur
Date         No       Clos
11/12/2017   21       314
2/1/2016     12       766

bal
Date         No       Clos
1/1/15       4        3432
2/3/12       33       3123

数据中需要注意的关键是“日期”列中可能有一些日期可能存在于bal中,但不存在于aur中,反之亦然。 所以你必须处理两个pandas数据帧中丢失的键,同时合并它们。在合并时,NaN应该替换为0。

当我使用以下代码时,这会产生ValueError:

result = pd.merge(aur.Close, bal.Close, on='Date')

ValueError: can not merge DataFrame with instance of type <cla    ss 
'pandas.core.series.Series'>

所以合并没有发生,并且上面给出了错误。

非常感谢您的回答。愿最好的一场胜利!!

1 个答案:

答案 0 :(得分:2)

我认为您需要合并DataFrames包含2列 - CloseDate,因此请在DataFramesmerge中选择这些列:

此外,还有2种格式的日期时间为strings,因此首先将它们转换为datetimes以用于同一type

aur['Date'] = pd.to_datetime(aur['Date'])
bal['Date'] = pd.to_datetime(bal['Date'])

result = pd.merge(aur[['Close', 'Date']], bal[['Close', 'Date']], on='Date')

如果使用:

result = pd.merge(aur.Close, bal.Close, on='Date')

然后尝试与列CloseSeries)合并并获取错误。