【问题标题】:Joining Multiple columns of same dataframe in python在python中加入相同数据框的多列
【发布时间】:2020-04-01 11:11:12
【问题描述】:

我想将同一数据框的多列合并为一列。列有任何标签。

输入:

 0  1  2  3  4
 a  b  c  d  e

结果:

0
a,b,c,d,e

请帮帮我。

我已经尝试过data1['all'] = data[data.columns[1:]].apply(lambda x: ','.join(x.dropna().astype(str)),axis=1)

但我无法获得所需的结果。

【问题讨论】:

  • 你能更具体点为什么不工作吗?为什么要删除第一列?

标签: python pandas dataframe join


【解决方案1】:

您的解决方案对我有用,只需稍加修改即可删除第一列并分配给相同的DataFrame

data['all'] = data.apply(lambda x: ','.join(x.dropna().astype(str)),axis=1)

如果没有缺失值且没有数值:

data['all'] = data.apply(','.join,axis=1)

print (data)
   0  1  2  3  4        all
0  a  b  c  d  e  a,b,c,d,e

如需新一栏DataFrame:

df = = data.apply(lambda x: ','.join(x.dropna().astype(str)),axis=1).to_frame('new')
#df = data.apply(','.join,axis=1).to_frame('new')
print (df)
         new
0  a,b,c,d,e

【讨论】:

  • 非常感谢您的帮助。虽然,我认为我的数据有些差,这就是我遇到问题的原因。
  • 我还是不确定。我开始处理虚拟数据,稍后会导入真实数据,看看它是否有效。非常感谢您的帮助和关心。会尽快更新。
  • @RajRajeshwariPrasad - 超级!让我知道它是如何工作的
【解决方案2】:

您可以完全避免 apply 并使用 Pandas 的内置字符串方法;在这种情况下,string concatenate

#merge the other columns to '0' and specify a delimiter
df['0'].str.cat(df.loc[:,'1':],sep=',')

 0    a,b,c,d,e
Name: 0, dtype: object  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2021-06-05
    • 2019-03-03
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多