gpt4 book ai didi

Python:在DataFrame中,在新列中为另一列中具有最高值的行添加值,并在第三列中添加相同的字符串

转载 作者:行者123 更新时间:2023-11-28 18:32:44 25 4
gpt4 key购买 nike

我试图找到一种有效的方法来确定在 DataFrame 中哪一行在另一列(字符串)中的“字符串”相同时在一列(值)中具有最高值,从而创建一个新列(主题)包含此信息以备后用。

这里是一个数据框的例子:

    String    N   value
0 EXAM 10 250
1 EXAMP 20 350
2 EXAMPLE 30 450
3 EXAMPLE 40 400
4 EXA 50 300
5 EX 60 100

这是我要找的:

    String    N   value  motif
0 EXAM 10 250 Nan
1 EXAMP 20 350 Nan
2 EXAMPLE 30 450 1
3 EXAMPLE 40 400 Nan
4 EXA 50 300 Nan
5 EX 60 100 Nan

我尝试使用拆分应用组合方法

def group_motif(df):
if df.groupby(['String']).size() > 1:
"something like for row with the highest value in column ['value']":
"create a new column in df called ['motif'] and add value = 1 in the row

然后我想对这个函数做一个 groupby.apply 然后组合不同的组,但我做不对。

除了使用 groupby 之外,还有其他有效的方法吗?

最佳答案

IIUC 然后你可以groupby 'String', filter 然后调用 idxmax 返回具有最大值的行标签并将这些行分配给 1:

In [201]:
df.loc[df.groupby('String').filter(lambda x: len(x) > 1)['value'].idxmax(), 'motif'] = 1
df

Out[201]:
String N value motif
0 EXAM 10 250 NaN
1 EXAMP 20 350 NaN
2 EXAMPLE 30 450 1
3 EXAMPLE 40 400 NaN
4 EXA 50 300 NaN
5 EX 60 100 NaN

关于Python:在DataFrame中,在新列中为另一列中具有最高值的行添加值,并在第三列中添加相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35352463/

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