我有一个熊猫数据框,我想根据以下条件创建一个新列BB
我能够使用
df.loc[df['TGR1'] == 0, 'BB'] = 0
我还尝试使用np.where来解决这个问题,但我能找到正确的方法
df['BB'] = np.where(df.TGR1 == 0,0, df.columns == test.TGR1.value )
Dist Track EVENT_ID Date 1 2 3 TGR1 TGR2
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 1 0
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 2 1
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 0 2
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 3 1
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 2 2
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 1 2
预期产出:
Dist Track EVENT_ID Date 1 2 3 TGR1 TGR2 BB
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 1 0 34.00
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 2 1 5.18
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 0 2 0
311m Cran 174331755 2020-10-19 34.00 5.18 19.10 3 1 19.10
一种方法是使用numpy advanced indexing:
可以使用列表理解和if-else逻辑创建列
在这里,您可以尝试玩一些numpy技巧,如本answer
我们首先用第1、2和3列中的值定义一个矩阵,然后用零添加第一列
时机
我比较了一些答案的时间。我刚拿了一个比原来大一万的
在运行每个测试之前,我做
df = df_bk.copy()
@wwnde的解决方案
@库克斯解
@拉帕奈溶液
@Psidom解
Psidom的解决方案和我的解决方案的时间基本相同。这里有一个情节
相关问题 更多 >
编程相关推荐