在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'>
所以合并没有发生,并且上面给出了错误。
非常感谢您的回答。愿最好的一场胜利!!
答案 0 :(得分:2)
我认为您需要合并DataFrames
包含2列 - Close
和Date
,因此请在DataFrames
和merge
中选择这些列:
此外,还有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')
然后尝试与列Close
(Series
)合并并获取错误。