【问题标题】:How to fill column values from dataframe column names based on condition?如何根据条件从数据框列名中填充列值?
【发布时间】:2019-08-13 02:49:08
【问题描述】:

我有一个包含这些列的数据框 - maxlevel, level1id, level2id, level3id

我需要根据 maxlevel 列中的值填充一个新列 - newcol_value

如果maxlevel = 1,则使用level1id 填充newcol_value

如果maxlevel = 2,则使用level2id 填充newcol_value

如果maxlevel = 3,则使用level3id 填充newcol_value

我试过了。

id_dict = {1:'level1id', 2:'Level2ID', 3:'level3id', 4:'level4id', 5:'level5id'}
df['id'] = df[id_dict[df['maxlevel']]]

但由于df['maxlevel] 正在提供系列,我收到以下错误。

TypeError: 'Series' 对象是可变的,因此它们不能被散列

如何根据maxlevel 列中的值填充newcol_value 值?

【问题讨论】:

标签: python pandas dataframe series pandasql


【解决方案1】:

你应该使用lookup

d={'level1id':1, 'Level2ID':2, 'level3id':3, 'level4id':4, 'level5id':5}


df=df.rename(columns=d)
df['New']=df.lookup(df.index,df.maxlevel)

【讨论】:

  • 没有。它所做的只是用column_name 更新。不与列值。 预期: 该行的 level1id 中的值。 实际: level1id
  • @SukumarRdjf 然后尝试替换
  • 没有。它仍然提供相同的输出。
  • @SukumarRdjf 啊使用查找,抱歉忽略了问题
猜你喜欢
  • 1970-01-01
  • 2021-07-25
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2023-02-05
  • 1970-01-01
相关资源
最近更新 更多