我试图将2个数据帧合并在一起 . 具有讽刺意味的是,他们最初是作为同一数据框架的一部分开始的,但我正在制定婴儿步骤 - 有时是在错误的方向 . 第1帧看起来像这样:
Int64Index: 10730 entries, 0 to 10729
Data columns (total 6 columns):
RegionID 10730 non-null int64
RegionName 10730 non-null object
State 10730 non-null object
Metro 10259 non-null object
CountyName 10730 non-null object
SizeRank 10730 non-null int64
dtypes: int64(2), object(4)
第2帧看起来像这样:
Int64Index: 10730 entries, 0 to 10729
Data columns (total 82 columns):
1996Q2 8218 non-null float64
1996Q3 8229 non-null float64
1996Q4 8235 non-null float64
.....
2016Q1 10730 non-null float64
2016Q2 10730 non-null float64
2016Q3 10730 non-null float64
dtypes: float64(82)
请注意,索引的类型相同,甚至具有相同的行数 .
我试图将数据帧合并在一起,如下所示:
df4 = pd.merge(df3, df2, how='inner', left_index=True, right_index=True)
我得到的错误是:
ValueError: can only call with other PeriodIndex-ed objects
第二个数据框中的2016Q1和类似命名的列都是Period类型,但我没有合并它们 - 我认为只要索引排成一行,合并应该有效吗?我究竟做错了什么?
2 回答
假设我们有以下DF:
注意:
df1.columns
属于PeriodIndex
dtypemerge
和join
将返回:ValueError: can only call with other PeriodIndex-ed objects
as,AFAIK,Pandas DF不能有混合列dtypes,如果其中一些是PeriodIndex
dtype:merge
抛出相同的异常:所以我们必须将
df1.columns
转换为字符串:现在
join
和merge
将起作用:合并DF的列
dtypes
:如果在合并完成后需要
df1.columns
作为PeriodIndex
- 您可以在转换它们之前保存df1.columns
并在完成合并/加入后将它们设置回来:我实际上有同样的问题,并获得整数列 .
代替
我用了
希望这可以帮助