【问题标题】:how to replace the values of one column by taking the duplicated values applied on the other column如何通过采用应用于另一列的重复值来替换一列的值
【发布时间】:2021-05-14 17:39:20
【问题描述】:

所以我有一个类似的数据框

    name    age year
0   ram     25  97
1   syam    12  95
2   jodu    15  96
3   ram     23  98
4   jodu    20  99
5   shyam   18  10

从数据框中我看到重复的名称,例如 ram 或 shyam 有不同的年龄和不同的年份。我想用最低值取代所有年龄的 ram。这里 3 只公羊有 3 个年龄,即 25 和 23。我想用 25 到 23 之间的最低值填充所有 ram 的年龄。所以我的新数据将是

    name    age year
0   ram     23  97
1   syam    12  95
2   jodu    15  96
3   ram     23  98
4   jodu    15  99
5   shyam   12  10

如何在 pandas 中做到这一点?

【问题讨论】:

    标签: python pandas dataframe replace data-wrangling


    【解决方案1】:

    尝试 groupby 变换:

    df = df.assign(age = df.groupby('name')['age'].transform(min)) # here assign will return a new df
    # or df.age =  df.groupby('name')['age'].transform(min)) # change on same dataframe
    

    【讨论】:

      【解决方案2】:

      试试这个:

      df['age'] = df.groupby('name')['age'].transform('min')
      

      【讨论】:

        【解决方案3】:

        有这个(我用 nam 替换了“name”——因为打字速度很快):

        for n in range(len(df)):
              name_temp=df.loc[n].nam
              df.replace(df.loc[n].age, ((df.groupby("nam").agg("min").age).to_frame()).loc[name_temp].age, inplace=True)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-24
          • 2021-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-04
          相关资源
          最近更新 更多