将多行合并为单行-熊猫

时间:2019-05-16 12:40:30

标签: python pandas

我有一个包含8行dict值的数据框。我想用逗号将所有行合并为单行。由于我的数据框包含字典值,因此出现错误。可以将dict值合并到一行吗?

我有一个如下数据框,

         names                              names1
0        {'name':'Ashwin'}       {'name':'prem'}
1        {'name':'Alex'}         {'name':'Naga'}

我希望成为        名字 0 {'name':'Ashwin'},{'name':'Alex'} {'name':'prem'},{'name':'Naga'}

请注意:dtype不应更改为dict

预先感谢

3 个答案:

答案 0 :(得分:1)

将列转换为列表并调用DataFrame构造函数:

df = pd.DataFrame({'names': [df['names'].tolist()]})
print (df)
                                               names
0  [{'name': 'Ashwin', 'age': '26'}, {'name': 'Al...

如果值是字符串并且需要字典列表:

import ast

df = pd.DataFrame({'names': [df['names'].apply(ast.literal_eval).tolist()]})
print (df)
                                               names
0  [{'name': 'Ashwin', 'age': '26'}, {'name': 'Al...

答案 1 :(得分:0)

您可以尝试:

df_new=df.apply(','.join).reset_index(drop=True).rename('name')

答案 2 :(得分:0)

假设只需要一个字符串值,则可以将''.join()用作聚合函数:

pd.DataFrame(df.agg(lambda x: ','.join(x.astype(str)))).T

它给出:

                                               names
0  {'name': 'Ashwin', 'age': '26'},{'name': 'Alex...