我目前正在从事一个项目,需要在Pandas DataFrame中执行条件替换.我已经实现了一个解决方案,但我想知道是否有更有效的方法来实现同样的结果.
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'],
'Age': [25, 30, 35, 40, 45],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df_init = pd.DataFrame(data)
# Using `.loc`
df_init['Group'] = ['A', 'B', 'C', 'D', 'E']
df_init.loc[df_init.loc[
(df_init.City=='New York')
&(df_init.Name=='Alice')].index, 'City'] = 'Hamburg'
# Using method chaining
def _replace(dataframe):
dataframe.loc[dataframe.loc[
(dataframe.City=='New York')
&(dataframe.Name=='Alice')].index, 'City'] = 'Hamburg'
return dataframe
(df_init
.assign(Group=['A', 'B', 'C', 'D', 'E'])
.pipe(_replace)
)
在第一种方法中,我使用.loc
方法来定位满足条件的行,然后执行替换.在第二种方法中,我使用.assign
和.pipe
的方法链接来实现相同的结果.
我的问题是:是否有更有效的方法用Pandas DataFrame操作中的方法链取代.loc
方法?我应该提到的是,我对用链条连接Pandas 世界的方法非常陌生.