0

我还是熊猫的新手,我很难合并两个特定的数据框。

右表如下所示:

右表

左表如下所示:

左表

这是我试图运行的代码:

with pd.HDFStore(spadl_h5) as spadlstore:
    games = spadlstore["games"].merge(spadlstore["competitions"], 
                                      left_on='competitionId', right_on='wyId')

这是我收到的错误:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-93-98ebcfc55d82> in <module>
      1 with pd.HDFStore(spadl_h5) as spadlstore:
----> 2     games = spadlstore["games"].merge(spadlstore["competitions"], 
      3                                       left_on='competitionId', right_on='wyId')

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/frame.py in merge(self, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)
   7282         from pandas.core.reshape.merge import merge
   7283 
-> 7284         return merge(
   7285             self,
   7286             right,

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/reshape/merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)
     71     validate=None,
     72 ) -> "DataFrame":
---> 73     op = _MergeOperation(
     74         left,
     75         right,

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/reshape/merge.py in __init__(self, left, right, how, on, left_on, right_on, axis, left_index, right_index, sort, suffixes, copy, indicator, validate)
    625             self.right_join_keys,
    626             self.join_names,
--> 627         ) = self._get_merge_keys()
    628 
    629         # validate the merge keys dtypes. We may need to coerce

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/reshape/merge.py in _get_merge_keys(self)
    994                         right_keys.append(rk)
    995                     if lk is not None:
--> 996                         left_keys.append(left._get_label_or_level_values(lk))
    997                         join_names.append(lk)
    998                     else:

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/generic.py in _get_label_or_level_values(self, key, axis)
   1690             values = self.axes[axis].get_level_values(key)._values
   1691         else:
-> 1692             raise KeyError(key)
   1693 
   1694         # Check for duplicates

KeyError: 'competitionId'

'left_on' 和 'right_on' 列都是 int64。我还在合并中尝试了所有可能的“如何”(左/右/外/内)版本,但我仍然遇到同样的错误。

(表格是 h5 格式,因为我正在尝试使用 footballaction 包)

4

1 回答 1

0

不是根据你的问题左右翻转吗?

试试这个也许:

with pd.HDFStore(spadl_h5) as spadlstore:
    games = spadlstore["games"].merge(spadlstore["competitions"], 
                                      left_on='wyId', right_on='competitionId')
于 2020-06-05T17:46:51.403 回答