蟒蛇(熊猫)合并两个dataframes通过指数
嗨,我有以下dataframes:蟒蛇(熊猫)合并两个dataframes通过指数
> df1
id begin conditional confidence discoveryTechnique
0 278 56 false 0.0 1
1 421 18 false 0.0 1
> df2
concept
0 A
1 B
我怎么合并的索引来获得:
id begin conditional confidence discoveryTechnique concept
0 278 56 false 0.0 1 A
1 421 18 false 0.0 1 B
我问,因为这是我的理解这merge()
即df1.merge(df2)
使用列做matching.In其实这样做,我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 4618, in merge
copy=copy, indicator=indicator)
File "/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py", line 58, in merge
copy=copy, indicator=indicator)
File "/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py", line 491, in __init__
self._validate_specification()
File "/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py", line 812, in _validate_specification
raise MergeError('No common columns to perform merge on')
pandas.tools.merge.MergeError: No common columns to perform merge on
在索引上合并是不好的做法吗?这是不可能的吗?如果是这样的话,我可以将索引转换成一个名为“索引”的新列吗?
感谢
使用merge
,默认情况下有内连接:
pd.merge(df1, df2, left_index=True, right_index=True)
或者join
,默认情况下有左连接:
df1.join(df2)
或者concat
,默认情况下有外连接:
pd.concat([df1, df2], axis=1)
谢谢!我用'合并',对我来说很完美。 – brucezepplin
不错。对于其他读者来说,如果它不工作,看看你是否需要'.transpose()'你的一个dfs同步索引 - 这是我的问题 – Jona
可以使用concat([df1, df2, ...], axis=1)以串联的指标排列的两个或两个以上的DF:
pd.concat([df1, df2, df3, ...], axis=1)
或merge通过自定义字段/指标串联:
# join by _common_ columns: `col1`, `col3`
pd.merge(df1, df2, on=['col1','col3'])
# join by: `df1.col1 == df2.index`
pd.merge(df1, df2, left_on='col1' right_index=True)
或join通过指数加盟:
df1.join(df2)
非常感谢 - 合并的列规范是有用的。 – brucezepplin
试试这个:'df1.join(df2)' – MaxU