例如,如果我有以下 Dataframe
df = pd.DataFrame({'a':[0,1,2], 'b':[3,4,5], 'c':['a','a','b']})
我想创建一个结果列,以便输出
df1 = pd.DataFrame({'a':[0,1,2], 'b':[3,4,5], 'c':['a','a','b'], 'res':[0, 1, 5]})
如果列“c”包含值“a”,那么“res”列的值取自列“a”。实际上我有很多列,所以我想避免硬编码pd。其中(df.c=='a',…)有什么惯用的方法来完成任务吗?
1条答案
按热度按时间nwo49xxi1#
解决方案1:使用apply
使用
pandas.DataFrame.apply
每行获取索引并获取相应的值输出:
解决方案2:直接切片
下面是一个更快的选择,直接切片底层numpy阵列:
解决方案3
最后,一个有趣的选择
loc
及numpy.diag
要获取对角线(警告:这是非常低效的内存):