gpt4 book ai didi

python - 合并返回奇数长度

转载 作者:行者123 更新时间:2023-12-01 03:07:43 26 4
gpt4 key购买 nike

我在完成一项相对简单的任务时遇到问题...

我有两个数据框:我从 csv 读取的 df_sample

+------+-----------+-------+-----------+
| key | Full Text | Date | Publisher |
+------+-----------+-------+-----------+
| abcd | foofoo | date1 | a |
| bcde | barbar | date2 | b |
| cdef | foobar | date3 | c |
+------+-----------+-------+-----------+

len(df_sample) = 20000

df_labels 我从 Excel 中读取

+------+----------+--------+--------+
| key | relevant | other | other2 |
+------+----------+--------+--------+
| abcd | yes | blabla | blabla |
| bcde | no | blabla | blabla |
| cdef | no | blabla | blabla |
| defg | yes | blabla | blabla |
+------+----------+--------+--------+

len(df_labels) = 219000

我想在键上连接两个表,为第一个数据帧中的每个键分配相关值。所需的输出将如下所示:

+------+-----------+-------+-----------+----------+
| key | Full Text | Date | Publisher | relevant |
+------+-----------+-------+-----------+----------+
| abcd | foofoo | date1 | a | yes |
| bcde | barbar | date2 | b | no |
| cdef | foobar | date3 | c | no |
+------+-----------+-------+-----------+----------+

我似乎实现了这一点,但为什么以下给出了 27377 个结果而不是 20000 个结果(如原始左表中所示):

df = pd.merge(left=df_sample, right=df_labels, on="key")

最佳答案

您看到了额外的行,因为键在两个 df 中都不是唯一的,在您的情况下是第二个 df。您需要决定是否需要重复的行(这是当前的行为),还是要删除第二个 df 中的重复行:

df_labels = df_labels.drop_duplicates(subset='key')

默认情况下,这将仅保留第一个重复项,如果您想要其他行为,例如保留最后一个,则可以传递:keep='last' 请参阅 docs

关于python - 合并返回奇数长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43182318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com