如何用 excel 中的另一个替换特定列中的特定单词
How to replace specific words in specific column with another from excel
- 我在替换时遇到问题,这是我写的,我需要将 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列25=].
A B
1999 1900
谢谢大家的帮助。
您可以定义一个函数并使用 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))
这应该有效。它适用于字符串或数字,但会将值存储为字符串。如果您知道您只有 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()
- 我在替换时遇到问题,这是我写的,我需要将 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列25=].
A B
1999 1900
谢谢大家的帮助。
您可以定义一个函数并使用 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))
这应该有效。它适用于字符串或数字,但会将值存储为字符串。如果您知道您只有 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()