gpt4 book ai didi

python - 在 Pandas 中操作子集数据帧的行值

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

我有一个像这样的数据框df1:

    ID1    ID2
0 foo bar
1 fizz buzz

还有一个像这样的df2:

    ID1    ID2    Count    Code   
0 abc def 7 B
1 fizz buzz 5 B
2 fizz1 buzz2 9 C
3 foo bar 6 B
4 foo bar 6 Z

我想做的是过滤第二个数据帧,其中 ID1ID2 匹配第一个数据帧中的一行,作为数据帧 sub_df,然后将以下代码 sub_df.loc[sub_df["Count"] >= 5, "Code"] = "A" 应用到 sub_df:

sub_df:

    ID1    ID2    Count    Code   
1 fizz buzz 5 B
3 foo bar 6 B
4 foo bar 6 Z

最后,我想生成一个如下所示的数据框 df:

    ID1    ID2    Count    Code   
0 abc def 7 B
1 fizz buzz 5 A
2 fizz1 buzz2 9 C
3 foo bar 6 A
4 foo bar 6 A

我该怎么做?谢谢。

最佳答案

你可以 merge两个带有 indicator 的数据帧,并使用它来将 Code 设置为 A 或不是:

df = df2.merge(df1, how='left', on=['ID1','ID2'], indicator='ind')
df.loc[(df["Count"] >= 5) & (df['ind'] == 'both'), "Code"] = "A"
df = df.drop('ind', axis=1)

print(df2)

ID1 ID2 Count Code
0 abc def 7 B
1 fizz buzz 5 A
2 fizz1 buzz2 9 C
3 foo bar 6 A
4 foo bar 6 A

关于python - 在 Pandas 中操作子集数据帧的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57725030/

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