繁体   English   中英

Pandas 基于其他列创建多个列

[英]Pandas create multiple columns based on other columns

我有一个具有这种结构的巨大 df(720 列):

id A B C
1  1 0 1
2  1 0 1 
3  1 1 1

我想根据以下计算创建一个新的 df:

if A and B = 1 then  v1 = 1
if A and C = 1 then  v2 = 1
if A and D = 1 then  v3 = 1
if A and XX = 1 then v719 = 1

id V1 V2 
1  0  1
2  0  1 
3  1  1

因为我需要迭代 A vs B 和 C(实际上是 A vs 719 列),所以我正在寻找一种方法来编写这段代码,而无需对所有列执行类似的操作

df.loc[((df['A'] == 1) & (df['B'] == 1)), 'v1'] = 1
df.loc[((df['A'] == 1) & (df['C'] == 1)), 'v2'] = 1
df.loc[((df['C'] == 1) & (df['D'] == 1)), 'v2'] = 1
df.loc[((df['A'] == 1) & (df['XX'] == 1)), 'v719'] = 1

有任何想法吗?

对于你的问题我们可以做,因为 1 * 1 = 1

s=df.loc[:,'B':].mul(df.A,axis=0)
   B  C
0  0  1
1  0  1
2  1  1
s.columns=np.arange(s.shape[1])+1
df=df.join(s.add_prefix('v_'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM