【问题标题】:Replace multiple values based on index in a dataframe根据数据框中的索引替换多个值
【发布时间】:2022-08-18 18:48:45
【问题描述】:

我们有以下数据框:

import pandas as pd
df_test = pd.DataFrame(data=[10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
                       index=[\'day1\', \'day2\', \'day3\', \'day4\', \'day5\', \'day6\', \'day7\', \'day8\', \'day9\', \'day10\'])

如何根据索引替换其中的多个值?例如,我希望\'day9\'\'day10\' 行接收\'day1\'\'day2\' 的值。

我知道我们可以这样做:

df_test.loc[\'day9\'] = df_test.loc[\'day1\']
df_test.loc[\'day10\'] = df_test.loc[\'day2\']

但如果我有更多数据要替换,这将无法很好地扩展。不太确定如何使这个过程自动化。

    标签: python pandas dataframe


    【解决方案1】:

    创建索引列表,然后在 DataFrame.loc 中替换:

    L1 = ['day1','day2']
    L2 = ['day9','day10']
    
    df_test.loc[L2] = df_test.loc[L1].to_numpy()
    print (df_test)
            0
    day1   10
    day2   20
    day3   30
    day4   40
    day5   50
    day6   60
    day7   70
    day8   80
    day9   10
    day10  20
    

    另一个想法:

    L1 = ['day1','day2']
    L2 = ['day9','day10']
    
    df_test.update(df_test.loc[L1].rename(dict(zip(L1, L2))))
    print (df_test)
              0
    day1   10.0
    day2   20.0
    day3   30.0
    day4   40.0
    day5   50.0
    day6   60.0
    day7   70.0
    day8   80.0
    day9   10.0
    day10  20.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-23
      • 2017-07-23
      • 2013-12-28
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 2016-10-10
      • 2019-03-22
      相关资源
      最近更新 更多