Python 使用矢量化在熊猫中创建列
我正在尝试在熊猫数据帧上使用矢量化来创建一个新列。数据帧包含了相当多的记录。我在这里展示一个虚拟示例。我正在展示一个非矢量化的版本,它可以工作,但效率不高。我试图在使用函数的同时实现矢量化版本。实际函数比这里显示的函数要复杂得多Python 使用矢量化在熊猫中创建列,python,pandas,Python,Pandas,我正在尝试在熊猫数据帧上使用矢量化来创建一个新列。数据帧包含了相当多的记录。我在这里展示一个虚拟示例。我正在展示一个非矢量化的版本,它可以工作,但效率不高。我试图在使用函数的同时实现矢量化版本。实际函数比这里显示的函数要复杂得多 import pandas as pd import numpy as np df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')}) df['color'] = np.where(df['Set']==
import pandas as pd
import numpy as np
df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
df['color'] = np.where(df['Set']=='Z', 'green', 'red')
def test(row):
if row['color'] =='green':
value='Green'
elif row['color'] =='red':
value=row['Type']
else:
value=row['Set']
return value
def test1(s,t,c):
if c =='green':
value='Green'
elif c =='red':
value=t
else:
value=s
return value
df['new_color']=df.apply(test,axis=1)
#df['new_color']=test1(df.Set,df.Type,df.color)
print(df)
Set Type color new_color
0 Z A green Green
1 Z B green Green
2 X B red B
3 Y C red C
任何帮助都将不胜感激。您可以使用np.where
这是个好建议。但是,我需要保留该函数,因为实际情况比上面的虚拟示例中所示的要复杂一些。对我来说,将所有条件封装在一个函数中并使用它更容易。我尽量避免使用速度慢的应用程序。
df['NC']=np.where(df.color=='green','Green',df.Type)
df
Out[1234]:
Set Type color NC
0 Z A green Green
1 Z B green Green
2 X B red B
3 Y C red C