Python 熊猫-在一列上合并两个数据帧,结果的行数超过指定的行数。如何?

Python 熊猫-在一列上合并两个数据帧,结果的行数超过指定的行数。如何?,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧: len(fut_df) # Result 31505 len(under_df) # Result 5187659 # Trying to merge them and get all relevant values into a dataframe. len(pd.merge(fut_df, under_df, on='timestamp', how='left') # Result 38508 i.e. more than the keys on left datafra

我有两个
数据帧

len(fut_df)
# Result 31505
len(under_df)
# Result 5187659

# Trying to merge them and get all relevant values into a dataframe.
len(pd.merge(fut_df, under_df, on='timestamp', how='left')
# Result 38508 i.e. more than the keys on left dataframe.


我试过
外部
内部
。每次结果数据帧的长度大于
fut_df
。我想合并
数据帧
,并获得时间戳在两者中匹配的值。我无法理解为什么我要返回的长度高于
fut_df

您在
中的
下有重复项。使用后应该可以正常工作,但您需要决定保留哪些值

len(pd.merge(fut_df, under_df.drop_duplicates(), on='timestamp', how='left'))
为了检查此问题,如果右数据帧中存在匹配的重复ID,中的参数
validate
将抛出错误

“多对一”或“m:1”:检查合并键在正确的数据集中是否唯一


检查
fut_df
中是否有重复项,您得到的可能是笛卡尔积。@sushanth谢谢。我做了一个
drop\u重复项(subset=['timestamp','contractname')
在两个数据帧上。正如其他人所说,关键列
时间戳
中有重复项。您可以帮助自己阅读连接的基本知识以及它们的工作原理。注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望您能帮助,谢谢,提前感谢,感谢,问候,k问候,签名,请你能帮忙吗,闲聊的材料和缩写的txtspk,恳求,你被困多久,投票建议,元评论,等等。只需解释你的问题,并展示你尝试了什么,你期望什么,以及实际发生了什么。
pd.merge(fut_df, under_df.drop_duplicates(), on='timestamp', how='left', validate = 'm:1')