【发布时间】:2015-02-01 14:34:11
【问题描述】:
我有两个由 groupby 操作生成的数据帧(实际上是系列):
bw
l1
Consumer Discretionary 0.118718
Consumer Staples 0.089850
Energy 0.109988
Financials 0.159418
Health Care 0.115060
Industrials 0.109078
Information Technology 0.200392
Materials 0.035509
Telecommunications Services 0.030796
Utilities 0.031190
dtype: float64
和pw
l1
Consumer Discretionary 0.148655
Consumer Staples 0.067873
Energy 0.063899
Financials 0.095689
Health Care 0.116015
Industrials 0.181346
Information Technology 0.117715
Materials 0.043155
Telecommunications Services 0.009550
Utilities 0.156103
dtype: float64
当我尝试和merge他们使用时
pd.merge(bw,pw,left_index=True,right_index=True)
我收到一个错误
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.py", line 2883, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-174-739bb362e06d>", line 1, in <module>
pd.merge(pw,attr,left_index=True,right_index=True)
File "/usr/lib/python2.7/dist-packages/pandas/tools/merge.py", line 39, in merge
return op.get_result()
File "/usr/lib/python2.7/dist-packages/pandas/tools/merge.py", line 185, in get_result
join_index, left_indexer, right_indexer = self._get_join_info()
File "/usr/lib/python2.7/dist-packages/pandas/tools/merge.py", line 251, in _get_join_info
left_ax = self.left._data.axes[self.axis]
IndexError: list index out of range
但是当我这样做时
bw = bw.reset_index()
pw = pw.reset_index()
mrg = pd.merge(pw,bw,on="l1")
它有效。但是,它使我的代码在多次连接迭代中的可读性大大降低,因此我想知道我做错了什么以及如何使代码merging on indexes 的第一个版本工作。
谢谢
【问题讨论】:
-
这很有趣,我觉得很好。你用的是什么版本的熊猫?另外,您可以尝试 dataframe.join()... bw.join(pw)
-
嗨@BobHaffner 它是ubuntu 存储库中的熊猫,我认为它是0.14.1。 bw.join(pw) 给出错误
AttributeError: 'Series' object has no attribute 'join'这就是为什么我要走合并的道路... -
好的,开枪。我忘记了 join 只是 df 的事情