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

时间:2016-02-12 00:00:26

标签: python pandas dataframe

我试图找到一种有效的方法来确定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之外,还有一种有效的方法吗?

1 个答案:

答案 0 :(得分:1)

IIUC然后您可以inputKeyword在' String',groupby上,然后调用filter返回具有最大值的行标签并分配这些行到idxmax

1