首页 > 解决方案 > 使用熊猫替换 xlsx 文件中的值

问题描述

我查看了其他示例并实现了它们,但我没有得到正确的结果。我有几个看起来像这样的数据框

Player_Name 

  0 J.T. Poston

Player_Name
  
  0 J.T. Poston

我正在尝试更改名称以匹配我拥有的另一个 excel 文件,因此我没有使用 excel 索引手动执行此操作。这是我的代码。

import json
import pandas as pd
import os

year = 2018

path_to_excel = '/Users/aus10/Desktop/PGA/PGA_Tour_Stats/Tournament_Results_Excel/'+str(year)+''
excel_files = [pos_json for pos_json in os.listdir(path_to_excel) if pos_json.endswith('.xlsx')]

for files in excel_files:

    df = pd.read_excel('/Users/aus10/Desktop/PGA/PGA_Tour_Stats/Tournament_Results_Excel/'+str(year)+'/'+files+'')
    df['Player_Name'].replace(to_replace='J.T. Poston', value='JT Poston')
    print(df)
    writer = pd.ExcelWriter('/Users/aus10/Desktop/PGA/PGA_Tour_Stats/Tournament_Results_Excel/'+str(year)+'/'+files+'', engine='xlsxwriter')
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    df.style.set_properties(**{'text-align': 'center'})
    pd.set_option('display.max_colwidth', 100)
    pd.set_option('display.width', 1000)
    writer.save()

但是,当我在运行代码后打开 excel 文件时,名称并没有改变。.xlsx由于我使用的是文件而不是文件,因此我是否缺少某些东西或需要特定的方法.csv

标签: pythonexcelpandas

解决方案


在这种情况下,重要的参数是inplace。检查此问题或直接在replace的文档中找到有关此主题的注释。

使用此更新应该足够了:

df['Player_Name'] = df['Player_Name'].replace(to_replace='J.T. Poston', value='JT Poston')

否则,您将替换副本,而不是原始数据框。

选项inplace=True也应该有效:

df.replace(to_replace='J.T. Poston', value='JT Poston', inplace=True)

推荐阅读