我试图找到一种有效的方法来确定DataFrame中哪一行在列(值)中具有最高值时,它们的" String"在另一列(String)中是相同的,使用此信息创建一个新列(motif)供以后使用。
这是一个数据帧的例子:
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
之外,还有一种有效的方法吗?
答案 0 :(得分:1)
IIUC然后您可以inputKeyword
在' String',groupby
上,然后调用filter
返回具有最大值的行标签并分配这些行到idxmax
:
1