当前位置: 首页 > 知识库问答 >
问题:

Python熊猫基于另一个列值创建新列

锺离慈
2023-03-14

基于dataframe列val_1值,查看其他列col_0-10标签前缀,然后创建另一列Mycl。

数据帧看起来像:

id  col0    col1    col2    col3    col4    col5 col6   col7    col8    col9    col10 val_1
1   0   5   -5  5   -5  0 0 1   4   3   -3  1
2   0   0   0   0   0   0 0 4   -4  0   0  7
3   0   0   1   2   3   0 0 0   5   6   0  9

应用逻辑后所需的数据帧:

id  col0    col1    col2    col3    col4    col5 col6   col7    col8    col9    col10 val_1 mycol
1   0   5   -5  5   -5  0 0 1   4   3   -3  1  5
2   0   0   0   0   0   0 0 4   -4  0   0  7  4
3   0   0   1   2   3   0 0 0   5   6   0  9  6

我是trid,但这不起作用:df['mycol']=df['col'df['val_1']。aType(str)]

DDL生成DataFrame:

df = pd.DataFrame({'id': [1, 2, 3],
                   'col0': [0, 0, 0],
                   'col1': [5, 0, 0],
                   'col2': [-5, 0, 1],
                   'col3': [5, 0, 2],
                   'col4': [-5, 0, 3],
                   'col5' : [0, 0, 0],
                   'col6': [0, 0, 0],
                   'col7': [1, 4, 0],
                   'col8': [4, -4, 5],
                   'col9': [3, 0, 6],
                   'col10': [-3, 0, 0],
                   'val_1' : [1, 7, 9]})

谢谢!

共有2个答案

许波涛
2023-03-14

您走的是正确的道路,唯一的问题是,如果您按照您的方式执行,那么您将返回整个列,而不仅仅是您想要的一个值。

相反,您可以使用例如DataFrame.apply

df['mycol'] = df.apply(lambda x: x['col'+str(x['val_1'])], axis=1)
司空海荣
2023-03-14

使用DataFrame。在val_1列的值前添加col前缀进行查找:

df['mycol'] = df.lookup(df.index, 'col' + df['val_1'].astype(str))
print (df)
   id  col0  col1  col2  col3  col4  col5  col6  col7  col8  col9  col10  \
0   1     0     5    -5     5    -5     0     0     1     4     3     -3   
1   2     0     0     0     0     0     0     0     4    -4     0      0   
2   3     0     0     1     2     3     0     0     0     5     6      0   

   val_1  mycol  
0      1      5  
1      7      4  
2      9      6  

 类似资料:
  • 我有这个原始数据帧: > 可能有多行具有相同的日期时间,如示例所示。 列< code>column中可能不止有两个不同的值,这是一个简化的示例。 所有值都是整数。 我想创建这个新的数据框: 需要采取的行动: > 对于列<code>列<code>中的每个唯一值,创建一个新列,该值作为列的名称。 对于每个唯一的日期时间,创建一个新行。 根据原始列填充值,如果没有值,则使用 NaN。 创建原始数据帧的代

  • 问题内容: 所以,这是我的数据框 我还有另一个清单: 如果x.Country位于欧洲,我想创建一个新列“ Continent” 问题答案: 或者您可以直接 使用

  • 我有一个pandas dataframe,需要根据dataframe中其他列的值创建新列。这是数据帧 人城市国家国家 美国伊利诺伊州芝加哥 美国亚利桑那州凤凰城B酒店 C美国加利福尼亚州圣地亚哥 我想根据state中的值创建两个新列 创建新列df[“城北”]=df[“城市”]其中state=“伊利诺伊” 创建新列df[“城市南部”]=df[“城市”],其中州不等于“伊利诺伊州” 我试过了 但是不等

  • 问题内容: 我想使用在数据帧中为另一列切片的字符串在Pandas中创建新列。 例如。 由一个简单的切片组成的新列在哪里 我尝试了许多尝试都无济于事-我觉得我缺少一些简单的东西。 最有效的方法是什么? 问题答案: 您可以调用该方法并应用切片,这将比其他方法更快,因为它是矢量化的(感谢@unutbu): 您也可以在df上调用lambda函数,但这在较大的数据帧上会比较慢:

  • 我想创建一个名为Playercategory的新专栏, 如果玩家的国籍为“美国”或除欧洲国家外的任何其他国家的美国,则Playercategory==“美国” 如果玩家的国籍是欧洲国家或与任何其他国家的欧洲国家,则Playerclass=="欧洲"(例如:"意大利"、"意大利/美国"、"德国/美国"、"立陶宛/澳大利亚"、"比利时") 对于所有其他玩家,则Playercategory==“非” 预

  • 我试图建立一个专栏,将根据另一个。新列应反映满足某些标准的值,并在值不符合标准的地方放置0。 例如,名为银行余额的列将有负值和正值;新列透支将为相应行提供负值,余额大于0时为0。 最终结果应该是这样的。