Python 使用熊猫将多个列转换为一个列

Python 使用熊猫将多个列转换为一个列,python,pandas,dataframe,apply,series,Python,Pandas,Dataframe,Apply,Series,我有这样一个数据帧结构: 我想知道熊猫最有效的方法是创建一个新列“stage”,提取四列中任何非“None”的值,并将该值用于“stage”列。在stage列提取出每行中任何非“None”的值后,可以删除其余四列 下面是所涉及的每列的唯一值的另一个快照: 请注意,有问题的列中的值是字符串类型,而None实际上不是Nonetype df['New']=df[['A','B','C']].replace('None','').sum(1) df Out[1477]: A B

我有这样一个数据帧结构:

我想知道熊猫最有效的方法是创建一个新列“stage”,提取四列中任何非“None”的值,并将该值用于“stage”列。在stage列提取出每行中任何非“None”的值后,可以删除其余四列

下面是所涉及的每列的唯一值的另一个快照:

请注意,有问题的列中的值是字符串类型,而None实际上不是Nonetype

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']})
数据输入

df=pd.DataFrame({'A':['None','A','None'],'B':['B','None','None'],'C':['None','None','C']})

首先考虑
combine\u
,假设None不是字符串文本
'None'

df['stage'] = df['doggo'].combine_first(df['floorfer'])\
                         .combine_first(df['pupper'])\ 
                         .combine_first(df['puppo'])
或者,对于干式er进近,使用
reduce

from functools import reduce
...

df['stage'] = reduce(lambda x,y: x.combine_first(y), 
                     [df['doggo'], df['floorfer'], df['pupper'], df['puppo']])

首先考虑
combine\u
,假设None不是字符串文本
'None'

df['stage'] = df['doggo'].combine_first(df['floorfer'])\
                         .combine_first(df['pupper'])\ 
                         .combine_first(df['puppo'])
或者,对于干式er进近,使用
reduce

from functools import reduce
...

df['stage'] = reduce(lambda x,y: x.combine_first(y), 
                     [df['doggo'], df['floorfer'], df['pupper'], df['puppo']])

您介意共享一个实际的数据帧和代码而不是图片吗?您介意共享一个实际的数据帧和代码而不是图片吗?谢谢!成功了。但是我不理解代码的.sum(1)部分。你能解释一下那里发生了什么吗?@KeenanBurke-Pitts-sum(1),是一行一行地对df求和,它是字符串,它将把它们连接在一起:-)(PS:我将所有的无替换为“”)@KeenanBurke-Pitts-yw~快乐编码谢谢!成功了。但是我不理解代码的.sum(1)部分。你能解释一下那里发生了什么吗?@KeenanBurke-Pitts-sum(1),是一行一行地对df求和,它是字符串,它将把它们连接在一起:-)(PS:我将所有无替换为“”)@KeenanBurke-Pitts-yw~快乐编码