繁体   English   中英

根据其他 4 个变量创建一个新变量

[英]Create a new variable based on 4 other variables

我在 Python 中有一个名为df1的 dataframe ,其中我有 4 个名为 Ordering_1 的二分变量; Ordering_2、Ordering_3、Ordering_4 的真/假值。

我需要创建一个名为Clean的变量,它基于其他 4 个变量。 意思是,当 Ordering_1 == True 时,Clean == Ordering_1,当 Ordering_2==True 时,Clean == Ordering_2。 那么 Clean 将是 Ordering_1 中所有真实值的组合; Ordering_2、Ordering_3、Ordering_4。

这是我希望变量 Clean 的示例:

我尝试了以下代码,但它不起作用: df1[Clean] = df1[Ordering_1] + df1[Ordering_1] + df1[Ordering_1] + df1[Ordering_1]

有人能帮我在 python 中如何做到这一点吗?

如果每行有多个True的通用解决方案 - 通过DataFrame.filter过滤列,然后使用DataFrame.dot进行矩阵乘法:

df1 = df.filter(like='Ordering_')

df['Clean'] = df1.dot(df1.columns + ',').str.strip(',')

如果每行只有一个“True”值,您可以使用每列“Ordering_1”、“Ordering_2”等的布尔值和 df1.loc。

请注意,这是您使用 df1.Ordering_1 得到的结果:0 True 1 False 2 False 3 False 名称:Ordering_1,dtype:bool

使用 df1.loc,您可以使用它来过滤“True”行,在这种情况下只有第 0 行: 在此处输入图像描述

所以你可以这样编码:

  1. 创建一个新的空白“clean”列:df1["clean"]=""

  2. 将系列 df.Ordering_1 = True 的行设置为“Ordering_1”:
    df1.loc[df1.Ordering_1,["clean"]] = "Ordering_1"
    在此处输入图像描述

  3. 以同样的方式处理剩余的列。

暂无
暂无

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

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