无法加入熊猫中的数据框
Posted
技术标签:
【中文标题】无法加入熊猫中的数据框【英文标题】:Unable to join to dataframe in pandas 【发布时间】:2020-02-02 09:11:30 【问题描述】:我有两个 df。第一个df是多索引,另一个是典型的单索引。
图 1:多索引 df
和
图 2:单一索引
加入这两个df后,出现以下错误
不能在没有重叠索引名称的情况下加入
我怀疑,这个错误是由于第一个 df 中的索引列 name 造成的(图 1)。
甚至,交换索引名称和典型数值也无济于事
图 2:多索引 df
我可以知道如何解决这个错误吗?
提前感谢您花费的时间
【问题讨论】:
默认情况下在相同索引上合并。您也可以显示您的第二个数据框吗? 您好,感谢您的回复。我附上了它,如图 2 所示 @adrianp 你能告诉我们你的代码吗?也许merge
可能合适,因为我认为您的索引不同。
不要发布数据集的屏幕截图,而是将文本数据复制/粘贴到问题中。
请minimal reproducible example。
【参考方案1】:
您可以将MultiIndex
中的第一级转换为merge
之前的列:
df = (df1.reset_index(level=0)
.merge(df2, left_index=True, right_index=True)
.set_index('name', append=True)
.swaplevel(1, 0))
或者如果使用连接:
df = df1.reset_index(level=0).join(df2).set_index('name', append=True).swaplevel(1, 0)
【讨论】:
感谢您的回复。根据您的建议,我留下了一个单一的索引 df 呢?如何维护多索引? @polosepian - 然后有必要创建 MultiIndex,答案已编辑。 感谢 Jezrael 的帮助,不胜感激【参考方案2】:如果您尝试执行诸如 df.rolling(window).cov()/df.rolling(window).var() 之类的功能,您尝试基本上合并两个多索引数据帧,我发生了什么我是否必须为索引指定一个名称,因为它不知道要匹配的索引名称,这就是您收到此错误的原因。如果您使用 yfin 之类的东西来获取数据,则不会遇到此问题,因为索引始终默认为“日期”。这是解决此问题的简单单行代码:
df.index.rename('Date', inplace=True)
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于无法加入熊猫中的数据框的主要内容,如果未能解决你的问题,请参考以下文章