【问题标题】:Python convert list to string in the dataframePython将列表转换为数据框中的字符串
【发布时间】:2019-03-05 05:10:06
【问题描述】:

我在熊猫数据框的单元格值中有一堆列表和字符串之类的文本。我正在尝试将列表转换为字符串,我能够将列表转换为字符串,但它也拆分了字符串。如果单元格在特定列中包含列表 [],如何仅应用此逻辑?

raw_data = {'Name': [['\'John Smith\''], ['\'Jane Doe\'']],
        'id': [['\'A1005\'','\'A1006\''], 'A200,A400,A500']}
dfRaw = pd.DataFrame(raw_data, columns = ['Name','id'])
dfRaw['Name'] = dfRaw['Name'].astype(str)

数据

Name                    id
0   ["'John Smith'"]    ['A1005', 'A1006']
1   ["'Jane Doe'"]  A200,A400,A500

需要这样的输出:

    Name                id
0   ["'John Smith'"]    'A1005','A1006'
1   ["'Jane Doe'"]      A200,A400,A500

但下面的代码也在拆分字符串单元格值。

dfRaw['id'] = dfRaw['id'].apply(lambda x: ','.join([str(i) for i in x]))

Name                     id
0   ["'John Smith'"]    'A1005','A1006'
1   ["'Jane Doe'"]  A,2,0,0,,,A,4,0,0,,,A,5,0,0

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用list comprehension 生成一个新列表,其中id 中的行加入使用string.join 的列表条目。 您可以使用isinstance 检查条目是否为list

    df['id'] = [','.join(i) if isinstance(i, list) else i for i in df['id']]
    

    输出

           Name                    id
    0  ['John Smith']          A1005,A1006
    1    ['Jane Doe']        A200,A400,A500
    

    【讨论】:

      猜你喜欢
      • 2022-08-17
      • 2020-01-20
      • 2021-10-15
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多