Как заменить определенные слова в определенном столбце другим из Excel - PullRequest
2 голосов
/ 24 октября 2019
  • У меня проблема с заменой, вот что я написал, мне нужно заменить 1999 на 1900, как вы можете видеть. Я начал недавно, поэтому, пожалуйста, извините. (Я много искал и смотрел клипы на YouTube, но метод не работал.)
        import pandas as pd
        df = pd.read_excel('book1.xlsx')

        #replace
        df.replace("1999","1900")

        #I also tried this method, but it didn't work.
        #df.replace(to_replace = "1999", value = "1900")

        #writer
        writer = pd.ExcelWriter('book2.xlsx')
        df.to_excel(writer,'new_sheet')
        writer.save()

  • Мой второй вопрос, как я могу заменить данные с помощью текстаНапример, файл (или Excel) замените 1999 (в столбце A, book1.xlsx) на столбец b в файле errors.xlsx.
 A     B
 1999   1900

Спасибо, ребята, за помощь.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Это должно работать. Он будет работать со строкой или числами, но будет хранить значения в виде строки. Если вы знаете, что у вас есть только 1999 как число, просто удалите .astype (str) и выведите одинарные кавычки на протяжении многих лет.

df=pd.read_excel('book1.xlsx',sheetname='Sheet1')

for key, value in df.iteritems(): 
    df[key] = df[key].astype(str).replace(to_replace='1999', value='1900')

writer=ExcelWriter('book2.xlsx')
df.to_excel(writer,'new_sheet',index=False)
writer.save()
0 голосов
/ 24 октября 2019

Вы можете определить функцию и применить ее поэлементно с помощью Series.apply:

df = pandas.DataFrame.from_records([('Cryptonomicon', 1999), ('Snow Crash', 1992), ('Quicksilver', 2003)], columns=['Title', 'Year'])
# df is:
#             Title  Year
#  0  Cryptonomicon  1999 
#  1     Snow Crash  1992
#  2    Quicksilver  2003



# Imagine this dataframe came from an Excel spreadsheet...
df_replacements = pandas.DataFrame.from_records([(1999, 1900), (2003, 3003)], columns=['A', 'B'])

replacements = pandas.Series(df_replacements['B'].values, index=df_replacements['A'])

def replaced(value):
    return replacements.get(value, value)

df['Year'] = df['Year'].apply(replaced)

# df is:
#             Title  Year
#  0  Cryptonomicon  1900
#  1     Snow Crash  1992
#  2    Quicksilver  3003

Если у вас очень большой фрейм данных, вы можете векторизовать его, используя pandas.Series.map():

year = df['Year']
df['Year'] = year.where(~year.isin(replacements.keys()), 
                        year,
                        year.map(replacements))
...