Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用2个dataframe列作为参数应用函数_Python_Pandas - Fatal编程技术网

Python 使用2个dataframe列作为参数应用函数

Python 使用2个dataframe列作为参数应用函数,python,pandas,Python,Pandas,我想应用一个函数,根据其他两列中的变量创建一列 一列“SSPstaterank”返回郊区排名 第二列“SSPstaterank%”返回郊区排名百分比 我原以为这段代码可以工作,但它返回: TypeError在索引处发生:“DataFrame”对象不可调用 0' 使用func1代替df2: 另一个具有的解决方案应该更快: df2 = pd.DataFrame({'SSPstaterank':[2,1,2,2,7], 'SSPstaterank%':[.99,

我想应用一个函数,根据其他两列中的变量创建一列

一列“SSPstaterank”返回郊区排名

第二列“SSPstaterank%”返回郊区排名百分比

我原以为这段代码可以工作,但它返回:

TypeError在索引处发生:“DataFrame”对象不可调用 0'

使用func1代替df2:

另一个具有的解决方案应该更快:

df2 = pd.DataFrame({'SSPstaterank':[2,1,2,2,7],
                    'SSPstaterank%':[.99,.93,.93,.98,.23]})


m1 = df2['SSPstaterank'] == 1
m2 = df2['SSPstaterank%'] >= 0.95
m3 = df2['SSPstaterank%'] >= 0.9

masks = [m1, m2, m3]
vals = ['the #1 suburb','ranked top 5% of suburbs','ranked top 10% of suburbs']

df2['rankdescript'] = np.select(masks, vals, default='not matched')
print (df2)
   SSPstaterank  SSPstaterank%               rankdescript
0             2           0.99   ranked top 5% of suburbs
1             1           0.93              the #1 suburb
2             2           0.93  ranked top 10% of suburbs
3             2           0.98   ranked top 5% of suburbs
4             7           0.23                not matched
使用func1代替df2:

另一个具有的解决方案应该更快:

df2 = pd.DataFrame({'SSPstaterank':[2,1,2,2,7],
                    'SSPstaterank%':[.99,.93,.93,.98,.23]})


m1 = df2['SSPstaterank'] == 1
m2 = df2['SSPstaterank%'] >= 0.95
m3 = df2['SSPstaterank%'] >= 0.9

masks = [m1, m2, m3]
vals = ['the #1 suburb','ranked top 5% of suburbs','ranked top 10% of suburbs']

df2['rankdescript'] = np.select(masks, vals, default='not matched')
print (df2)
   SSPstaterank  SSPstaterank%               rankdescript
0             2           0.99   ranked top 5% of suburbs
1             1           0.93              the #1 suburb
2             2           0.93  ranked top 10% of suburbs
3             2           0.98   ranked top 5% of suburbs
4             7           0.23                not matched

第二种解决方案可能更快;使用df.apply…,axis=1通常非常慢。第二个解决方案可能更快;使用df.apply…,axis=1通常非常慢。
df2 = pd.DataFrame({'SSPstaterank':[2,1,2,2,7],
                    'SSPstaterank%':[.99,.93,.93,.98,.23]})


m1 = df2['SSPstaterank'] == 1
m2 = df2['SSPstaterank%'] >= 0.95
m3 = df2['SSPstaterank%'] >= 0.9

masks = [m1, m2, m3]
vals = ['the #1 suburb','ranked top 5% of suburbs','ranked top 10% of suburbs']

df2['rankdescript'] = np.select(masks, vals, default='not matched')
print (df2)
   SSPstaterank  SSPstaterank%               rankdescript
0             2           0.99   ranked top 5% of suburbs
1             1           0.93              the #1 suburb
2             2           0.93  ranked top 10% of suburbs
3             2           0.98   ranked top 5% of suburbs
4             7           0.23                not matched