我有一个数据帧,它包含一个包含字符串值的列。我需要用函数的结果替换该列中的每个值。我希望这样做,而不必迭代数千行。函数接受一个术语并返回该术语的已批准新值。你知道吗
示例:getPreferredTerm('STAINED')
将返回'DISCOLORED',因此p\u TERM列中'STAINED'的值将全部替换为'DISCOLORED'。你知道吗
我正在努力使用numpy
来完成这个任务。你知道吗
df['P_TERM'] = getPreferredTerm(df['P_TERM'])
getPreferredTerm函数如下:
def getPreferredTerm(stresc):
# NOTE" obsData is a dataframe containing legacy terms in a
# column called 'STRESC' and preferred terms in a column
# named 'PTERM' so this function takes a legacy term as input
# and returns a preferred term
try:
df = obsData.loc[(obsData['STRESC'] == stresc)].iloc[0]['P_TERM']
pterm = df
except Exception as e:
pterm = 'UNMAPPED'
return pterm
如果我给这个函数传递一个序列而不是一个单一的值,它是否可以矢量化?你知道吗
使用^{} 将函数应用于序列中的每个元素:
请注意,这样的计算不会矢量化,也不会到位。Pandas将执行一个循环,将函数应用于序列中的每个值。结果序列随后被分配回数据帧。你知道吗
如果要使用字典映射值,可以使用
pd.Series.map
。此操作由熊猫优化。你知道吗另一种方法是使用
pd.Series.replace
,但请参见note on performance。你知道吗更新需求的矢量化方法:
相关问题 更多 >
编程相关推荐