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')