是否有允许根据条件从不同列中进行选择的pandas函数?这类似于SQL Select子句中的CASE语句。例如,假设我有以下数据帧:
foo = DataFrame(
[['USA',1,2],
['Canada',3,4],
['Canada',5,6]],
columns = ('Country', 'x', 'y')
)
当Country='美国'时,我想从列'x'中选择,当Country='加拿大'时,我想从列'y'中选择,结果如下:
Country x y z
0 USA 1 2 1
1 Canada 3 4 4
2 Canada 5 6 6
[3 rows x 4 columns]
这里有一个通用的解决方案,可以根据另一列中的值选择任意列。
这还有一个额外的好处,就是在一个简单的
dict
结构中分离查找逻辑,这使得修改变得容易。我扩展到一个操作,其中条件结果存储在外部查找结构中(
dict
)为存储在
dict
中的每个列循环pd.DataFrame
,并使用条件表中的值来确定要选择的列给生活上一课
使用^{} 的} :
other
参数和^{如果要将
z
作为列名,请指定keys
:这将起作用:
您可以使用
loc
:编辑
尽管使用
loc
的笨拙会随着更大的数据帧而更好地扩展,因为这里为每一行调用apply,同时使用布尔索引将被矢量化。相关问题 更多 >
编程相关推荐