gpt4 book ai didi

Python/Pandas - 使用多个重复键合并索引

转载 作者:行者123 更新时间:2023-11-28 18:17:20 24 4
gpt4 key购买 nike

我有这个数据框:

df1:
year revenues
index
03374312000153 2010 25432
03374312000153 2009 25433
48300560000198 2014 13894
48300560000198 2013 18533
48300560000198 2012 18534
NaN NaN NaN
...

我还有另一个数据框:

df2:
Name Street
index
03374312000153 Yeap Co Locc St
54623827374939 Damn Co Geez St
37273829349299 Woohoo Co Under St
...

我只需要从 df1 中选择其索引出现在 df2.index 上的行并合并它们,所以它看起来像这样:

                year     revenues    Name      Street
index
03374312000153 2010 25432 Yeap Co Locc St
03374312000153 2009 25433 Yeap Co Locc St
...

如果我尝试:

df2=df2.merge(df1,left_index=True,right_index=True)

我得到一个错误:

TypeError: type object argument after * must be a sequence, not map

如果我尝试:

df2=df2.join(df1)

我得到了和上面一样的错误。

有人可以帮忙吗?

最佳答案

实际上,我认为您使用 Pandas 0.19.2 所做的事情没有任何问题。如果您的版本不是最新的,那可能是您的问题。检查它:

import pandas as pd
pd.__version__

我是如何构建你的数据框的:

df1 = pd.DataFrame({'year' : pd.Series([2010,2009,2014,2013,2012], index=['03374312000153','03374312000153','48300560000198','48300560000198','48300560000198']),
'revenues' : pd.Series([25432,25433,13894,18533,18534], index=['03374312000153','03374312000153','48300560000198','48300560000198','48300560000198'])})

df2 = pd.DataFrame({'Name' : pd.Series(['Yeap Co','Damn Co','Woohoo Co'],index=['03374312000153','54623827374939','37273829349299'] ),
'Street' : pd.Series(['Locc St','Geez St','Under St'], index=['03374312000153','54623827374939','37273829349299'] )})

df2.merge(df1,left_index=True,right_index=True)


Name Street revenues year
03374312000153 Yeap Co Locc St 25432 2010
03374312000153 Yeap Co Locc St 25433 2009

一些想法:

  • 使用非唯一索引不是首选做法,部分原因是因为如果你最终写入一个有约束的 RDBMS唯一的主键,你会出错。在这种情况下,你会加入列作为键而不是索引。
  • 最好为您的方法指定(如@Wen 所做的那样)“如何”选项。
  • 从连接生成新数据框而不是覆盖旧数据框是一种很好的做法。这样,如果连接失败,尤其是在大型数据帧上,您不必重新创建以前的数据帧。

关于Python/Pandas - 使用多个重复键合并索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47540944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com