Python 连接列的最佳方式是什么?从列的列表中

Python 连接列的最佳方式是什么?从列的列表中,python,pandas,join,merge,Python,Pandas,Join,Merge,我有这样的数据帧: A B C D E F aa bb cc dd ee ff NA ba NA da ea NA list_col = ['A', 'B', 'C'] 所以我只想合并列表中的列。此外,我不希望合并NA值。。有办法吗 期望输出 A B C D E F desired_col aa bb cc dd e

我有这样的数据帧:

A     B     C    D     E      F
aa    bb    cc  dd    ee      ff
NA    ba    NA  da    ea      NA

list_col = ['A', 'B', 'C']
所以我只想合并列表中的列。此外,我不希望合并NA值。。有办法吗

期望输出

 A     B     C    D     E      F         desired_col
aa    bb    cc  dd    ee      ff          aa-bb-cc
NA    ba    NA  da    ea      NA             ba

您可以使用理解列表:

将熊猫作为pd导入
df=pd.DataFrame(
[('aa','bb','cc','dd','ee','ff'),(无,'ba',无,'da',ea',无),],
列=['A','B','C','D','E','F']
)
所需的列=['A','B','C']
def join_值(值):
返回“-”。如果没有其他值,则连接(映射(str,value))
df['所需颜色']=[
连接_值(筛选器(lambda v:not pd.isnull(v),值))
对于zip格式的值(*(df[c]表示所需列中的c))
]
df
A B C D E F所需颜色
0 aa bb cc dd ee ff aa bb cc
1无ba无da ea无ba
请注意,如果您的NA值是字符串
“NA”
,则只需更换过滤功能即可:

df['desired_col']=[
连接_值(过滤器(lambda v:v!=“NA”,值))
对于zip格式的值(*(df[c]表示所需列中的c))
]

您可以使用理解列表:

将熊猫作为pd导入
df=pd.DataFrame(
[('aa','bb','cc','dd','ee','ff'),(无,'ba',无,'da',ea',无),],
列=['A','B','C','D','E','F']
)
所需的列=['A','B','C']
def join_值(值):
返回“-”。如果没有其他值,则连接(映射(str,value))
df['所需颜色']=[
连接_值(筛选器(lambda v:not pd.isnull(v),值))
对于zip格式的值(*(df[c]表示所需列中的c))
]
df
A B C D E F所需颜色
0 aa bb cc dd ee ff aa bb cc
1无ba无da ea无ba
请注意,如果您的NA值是字符串
“NA”
,则只需更换过滤功能即可:

df['desired_col']=[
连接_值(过滤器(lambda v:v!=“NA”,值))
对于zip格式的值(*(df[c]表示所需列中的c))
]
您可以使用
apply(…,x=1)
按行处理数据帧。但您希望忽略NaN值,因此必须排除它们。您可以使用:

df[list_col].apply(lambda x: '-'.join(x.dropna()), axis=1)
它给出:

0    aa-bb-cc
1          ba
dtype: object
您可以使用
apply(…,x=1)
按行处理数据帧。但您希望忽略NaN值,因此必须排除它们。您可以使用:

df[list_col].apply(lambda x: '-'.join(x.dropna()), axis=1)
它给出:

0    aa-bb-cc
1          ba
dtype: object

您可以使用类似于
df=df[list\u col]
的东西。现在还不清楚你不想要“合并后的NA值”是什么意思。
df.reindex(columns=list\u col)
做你想做的事吗?不,我只想将列表中的所有列合并到一列中。。。因此,我主要想要新的列,它是所有合并列的结果。也许你可以想要的输出?我在问题中编辑了你可以使用类似于
df=df[list\u col]
的东西。现在还不清楚你不想要“合并后的NA值”是什么意思。
df.reindex(columns=list\u col)
做你想做的事吗?不,我只想将列表中的所有列合并到一列中。。。因此,我主要需要新列,它是所有合并列的结果。也许您可以获得所需的输出?我在问题中编辑了我以前尝试过此操作,但未能解决此问题
TypeError:sequence item 0:expected str instance,float found
仍然收到相同的错误
TypeError:sequence item 0:expected str instance,found float
我假设列中有字符串值,但似乎有float值。我更改了答案我以前尝试过,但未能解决此问题
TypeError:sequence item 0:expected str instance,float found
仍然收到相同的错误
TypeError:sequence item 0:expected str instance,found float
我假设列中有字符串值,但似乎有float值。我改变了回答谢谢这正是我想要的谢谢这正是我想要的。