繁体   English   中英

合并两个pandas数据帧多对一

[英]Merging two pandas dataframes many-to-one

如何合并以下数据集:

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

我想得到像这样的smth:

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,但仍然得到相同的错误

请告诉我这个问题。

df.merge文档 validate在0.21.0版加入。 您使用的是旧版本,因此您应该更新正在使用的pandas版本。

正如@DeepSpace所提到的 ,您可能需要升级您的熊猫。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM