合并两个pandas数据帧多对一

时间:2018-02-12 12:11:41

标签: python python-3.x pandas dataframe merge

如何合并以下数据集:

df = A
date abc
1    a
1    b
1    c
2    d
2    dd
3    ee
3    df

df = B
date ZZZ
1    a
2    b
3    c

我希望得到像这样的人:

date abc  ZZZ
1    a     a
1    b     a
1    c     a
2    d     b
2    dd    b
3    ee    c
3    df    c

我试过这段代码:

aa = pd.merge(A, B, left_on="date", right_on="date", how="left", validate="m:1")

但我有以下错误:

TypeError: merge() got an unexpected keyword argument 'validate'

我使用(conda update pandas)更新我的pandas,但仍然得到相同的错误

请告诉我这个问题。

2 个答案:

答案 0 :(得分:2)

根据df.merge docs validate在版本0.21.0中添加。您使用的是旧版本,因此您应该更新正在使用的pandas版本。

答案 1 :(得分:1)

作为@DeepSpace mentioned,您可能需要升级您的pandas。

要复制早期版本中的检查,您可以执行以下操作:

import pandas as pd

df1 = pd.DataFrame(index=['a', 'a', 'b', 'b', 'c'])
df2 = pd.DataFrame(index=['a', 'b', 'c'])

x = [i for i in df2.index if i in set(df1.index)]
len(x) == len(set(x))  # True


df1 = pd.DataFrame(index=['a', 'a', 'b', 'b', 'c'])
df2 = pd.DataFrame(index=['a', 'b', 'c', 'a'])

y = [i for i in df2.index if i in set(df1.index)]
len(y) == len(set(y))  # False