我想知道pandas最有效的方法是创建一个新列" stage"提取任何不是“无”的值。在四列中,并将该值用于' stage'列。在阶段列提取出每行中不包含任何值的任何值之后,可以删除剩余的四列。
请注意,相关列中的值是字符串类型,而“无”实际上是非类型。
答案 0 :(得分:1)
df['New']=df[['A','B','C']].replace('None','').sum(1)
df
Out[1477]:
A B C New
0 None B None B
1 A None None A
2 None None C C
数据输入
df=pd.DataFrame({'A':['None','A','None'],'B':['B','None','None'],'C':['None','None','C']})
答案 1 :(得分:0)
考虑'None'
,假设无不是字符串文字df['stage'] = df['doggo'].combine_first(df['floorfer'])\
.combine_first(df['pupper'])\
.combine_first(df['puppo'])
。
reduce
或者,对于DRY-er方法,请使用from functools import reduce
...
df['stage'] = reduce(lambda x,y: x.combine_first(y),
[df['doggo'], df['floorfer'], df['pupper'], df['puppo']])
:
{{1}}