【问题标题】:How do I modify an item in a pandas dataframe using python?如何使用 python 修改 pandas 数据框中的项目?
【发布时间】:2021-09-04 16:59:59
【问题描述】:

我希望能够访问 Excel 电子表格并修改其中的值,例如 AHU 01-01 到 AHU-01-01。我想把“AHU”改成“AHU-”而不丢失后面的数字。

这是我当前的代码:

import pandas as pd
df1=pd.read_excel("MDCC AHU Schedule FOR PYTHON.xlsx")
ahunameonschedule = df1.iloc[0]
columns = pd.Index([ahunameonschedule])

这是上面代码的输出:

Index([[nan, 'DESIGNATION', nan, 'AHU 01-01', 'AHU 02-01', 'AHU 02-02', 'AHU 02-03', 'AHU 02-04', 'AHU 03-01'、'AHU 03-02'、'AHU 03-03'、'AHU 04-01'、'AHU 04-02'、'AHU 04-03'、'AHU 04-04'、' AHU 04-05'、'AHU 05-01'、'AHU 05-02'、'AHU 05-03'、'AHU 05-04'、'AHU 05-05'、'AHU 06-01'、'AHU 06-02'、'AHU 06-03'、'AHU 06-04'、'AHU 06-05'、'AHU 07-01'、'AHU 07-02'、'AHU 07-03'、'AHU 07 -04','AHU 07-05','AHU 08-01','AHU 08-02','AHU 08-03','AHU 08-04','AHU 08-05','AHU 09- 01'、'AHU 09-02'、'AHU 09-03'、'AHU 09-04'、'AHU 09-05'、'AHU 10-01'、'AHU 10-02'、'AHU 10-03 ', 'AHU 10-04', 'AHU 10-05']], dtype='object')

这是我尝试过的:

df1.rename(index={'AHU':'AHU-'}, level = 0, inplace=True)
df1

此外,如果值中没有“AHU”,我如何添加条件来说明?

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:
    mydict = {'row_num': [1,2,3,4,5],
          'col_to_change': ['AHU 03-01', 'AHU 03-02', 'AHU 03-03', 'AHU 04-01', 'AHU 01-01']}
    
    
    
    df = pd.DataFrame(mydict)
    
    df['changed_column'] = df[['col_to_change']].apply(lambda x : "-".join(x[0].split())
                                                   , axis = 1)
    

    【讨论】:

      【解决方案2】:

      您可以使用 pandas 重命名函数和正则表达式来重命名列。您可以使用正则表达式的 \A 来测试该列是否以 AHU 开头。这是一种方法:

      import regex as re
      
      row1list = ['a', 100, '2020/03/01', 'abc']
      row2list = ['b', 200, '2020/03/01', 'xyz']
      df = pd.DataFrame([row1list, row2list],
                        columns=['AHU 03-01', 'AHU 03-02', 'AHU 03-03', '04-02 AHU '])
      
      df2 = df.rename(columns=lambda x: re.sub('AHU ', 'AHU_', x))
      
      print(df2)
      #   AHU_03-01  AHU_03-02   AHU_03-03 04-02 AHU_
      # 0         a        100  2020/03/01        abc
      # 1         b        200  2020/03/01        xyz
      # note it renames the trailing 'AHU ' in the last column
      
      df3 = df.rename(columns=lambda x: re.sub('\\AAHU ', 'AHU_', x))
      print(df3)
      #   AHU_03-01  AHU_03-02   AHU_03-03 04-02 AHU 
      # 0         a        100  2020/03/01        abc
      # 1         b        200  2020/03/01        xyz
      # note it leaves the 'AHU ' in the last column alone
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        • 1970-01-01
        • 2016-08-29
        • 2012-08-31
        • 2022-01-14
        • 2019-04-19
        相关资源
        最近更新 更多