gpt4 book ai didi

python - pandas - 合并两个数据框覆盖并指定要保留的列

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:05 24 4
gpt4 key购买 nike

我正在尝试合并到 panda 数据帧,尽管我想要的实际上可能不是合并。

我在两个匹配的框架中有两列,其中一列共享可用于连接的唯一值。另一列有一个空字段和一个填充字段。

我想在匹配唯一字段时覆盖空字段,但只保留被覆盖的列,我不希望第二个 DataFrame 中的其余列。

希望下面能解释得更深入一些

>>> animals = [{"animal" : "dog", "name" : "freddy", "food" : ""},{"animal" : "cat", "name" : "dexter", "food" : ""},{"animal" : "dog", "name" : "lou lou", "food" : ""}]
>>> foods = [{"name" : "freddy", "food" : "dog mix", "brand" : "doggys dog"},{"name" : "dexter", "food" : "fussy cat mix", "brand" : "fish fishy"},{"name" : "lou lou", "food" : "bones", "brand" : "i was a cow"}]
>>> a_pd = pd.DataFrame(animals)
>>> a_pd
animal food name
0 dog freddy
1 cat dexter
2 dog lou lou
>>> f_pd = pd.DataFrame(foods)
>>> f_pd
brand food name
0 doggys dog dog mix freddy
1 fish fishy fussy cat mix dexter
2 i was a cow bones lou lou
>>>
>>>
>>> animal_data = a_pd.merge(f_pd, on='name', how='left')
>>> animal_data
animal food_x name brand food_y
0 dog freddy doggys dog dog mix
1 cat dexter fish fishy fussy cat mix
2 dog lou lou i was a cow bones
>>>

我应该只吃食物,我不想要品牌(还要注意这是样本数据,实时数据有更多的列

想要的结果

>>> animal_data
animal name food
0 dog freddy dog mix
1 cat dexter fussy cat mix
2 dog lou lou bones

最佳答案

使用:

animal_data = a_pd.merge(f_pd, on='name', how='left', suffixes=('_x','')).drop('food_x', axis=1)

输出:

  animal     name        brand           food
0 dog freddy doggys dog dog mix
1 cat dexter fish fishy fussy cat mix
2 dog lou lou i was a cow bones

或者

a_pd[['animal','name']].merge(f_pd, how='left')

输出:

  animal     name        brand           food
0 dog freddy doggys dog dog mix
1 cat dexter fish fishy fussy cat mix
2 dog lou lou i was a cow bones

关于python - pandas - 合并两个数据框覆盖并指定要保留的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52278630/

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