Python 当列匹配某些关键字时插入值
Python Insert value when Column matches certain keywords
我想在 B 列中插入一个整数值,前提是它与我在 Python 中创建的列表中的特定值相匹配。
例如,data.xlsx 将包含以下内容:
A 列:今天、明天
B 列:现在为空
C 列:abc、def
我的条件是,如果 A 列的值为今天,则在 B 列中插入 123,如果为明天,则插入 456,依此类推。注意 C 列与这个问题无关,但我仍然需要保留这些并将它们输出到 Excel.
我怎样才能在 Python 代码中实现它?
会是这样吗?
import pandas as pd
Df=pd.read_excel(‘data.xlsx’)
???
Df.to_excel(‘data_final.xlsx’) - 确保所有 A、B、C 列仍然完好无损,并在 B 列中填写新值。
谢谢。
df.loc[]
可能是最简单的解决方案:
import pandas as pd
df = pd.read_excel('data.xlsx')
df.loc[df['A'] == 'Today', 'B'] = 123
df.loc[df['A'] == 'Tomorrow', 'B'] = 456
df.to_excel('data_final.xlsx')
但是,np.select()
也可以用于此:
import pandas as pd
import numpy as np
df = pd.read_excel('data.xlsx')
conditions = [(df['A'] == 'Today'), (df['A'] == 'Tomorrow'), (df['C'] == True)]
choices = [123, 456, 789]
df['B'] = np.select(conditions, choices, default=np.nan)
df.to_excel('data_final.xlsx')
或者,您可以使用 lambda 表达式完成任务:
import pandas as pd
df = pd.read_excel('data.xlsx')
df['B'] = df['A'].apply(lambda x: 123 if x == 'Today' else (456 if x == 'Tomorrow' else 789))
df.to_excel('data_final.xlsx')
我想在 B 列中插入一个整数值,前提是它与我在 Python 中创建的列表中的特定值相匹配。
例如,data.xlsx 将包含以下内容:
A 列:今天、明天
B 列:现在为空
C 列:abc、def
我的条件是,如果 A 列的值为今天,则在 B 列中插入 123,如果为明天,则插入 456,依此类推。注意 C 列与这个问题无关,但我仍然需要保留这些并将它们输出到 Excel.
我怎样才能在 Python 代码中实现它?
会是这样吗?
import pandas as pd
Df=pd.read_excel(‘data.xlsx’)
???
Df.to_excel(‘data_final.xlsx’) - 确保所有 A、B、C 列仍然完好无损,并在 B 列中填写新值。
谢谢。
df.loc[]
可能是最简单的解决方案:
import pandas as pd
df = pd.read_excel('data.xlsx')
df.loc[df['A'] == 'Today', 'B'] = 123
df.loc[df['A'] == 'Tomorrow', 'B'] = 456
df.to_excel('data_final.xlsx')
但是,np.select()
也可以用于此:
import pandas as pd
import numpy as np
df = pd.read_excel('data.xlsx')
conditions = [(df['A'] == 'Today'), (df['A'] == 'Tomorrow'), (df['C'] == True)]
choices = [123, 456, 789]
df['B'] = np.select(conditions, choices, default=np.nan)
df.to_excel('data_final.xlsx')
或者,您可以使用 lambda 表达式完成任务:
import pandas as pd
df = pd.read_excel('data.xlsx')
df['B'] = df['A'].apply(lambda x: 123 if x == 'Today' else (456 if x == 'Tomorrow' else 789))
df.to_excel('data_final.xlsx')