首页 > 解决方案 > 将带有列表的 Pandas 列转换为字符串

问题描述

我正在尝试转换必须转换的熊猫数据框列,list for each rowstring in each row不知何故它没有转换。这是我从其他答案中尝试过的。

代码:

import pandas as pd
import numpy as np
data = pd.DataFrame.from_dict(dict, orient = 'index') # save the given data below in dict variable to run this line

第一种方法:

data['tags'] = data['Tags'].apply(lambda x: ' '.join(map(str, x)))

第二种方法:

data['tags']=[''.join(map(str,item)) for item in data['Tags']]

但是这两个都给了我列中相同的字符串列表tags。如下所示,

0    ['python', 'windows', 'pip', 'pygame', 'pycharm']
1                         ['converters', 'dxf', 'dwg']
2                           ['python', 'regex', 'nlp']
3          ['sql', 'join', 'dynamic', 'logic', 'case']
4                   ['r-markdown', 'hugo', 'blogdown']
Name: tags, dtype: object

我想要这种形式

0    'python', 'windows', 'pip', 'pygame', 'pycharm'
1                         'converters', 'dxf', 'dwg'
2                           'python', 'regex', 'nlp'
3          'sql', 'join', 'dynamic', 'logic', 'case'
4                   'r-markdown', 'hugo', 'blogdown'
Name: tags, dtype: object

这是使用 data.head(5).to_dict(orient = 'index') 的数据(前 5 行)

{'Tags': {0: "['python', 'windows', 'pip', 'pygame', 'pycharm']",
  1: "['converters', 'dxf', 'dwg']",
  2: "['python', 'regex', 'nlp']",
  3: "['sql', 'join', 'dynamic', 'logic', 'case']",
  4: "['r-markdown', 'hugo', 'blogdown']"},
 'cleaned_text': {0: 'matter pip version instal specific python version read round still stuck upgrade python 3 7 x python 3 8 1 windows 10 go cmd prompt check pip instal module',
  1: 'convert dwg dxf node php jave etc convert dwg file dxf node js python java already try ogr2ogr success thank advance',
  2: 'match text base string list extract subsection python try generate structure earning call text look like following sample operator lady gentleman thank stand welcome xyz fourth quarter',
  3: 'sql dynamically join table various column first time posting use case want join sale datum master agreement table determine applicable fee transactional level hard part agreement',
  4: 'ok update hugo run 2 year old version hugo academic theme blogdown late version hugo ubuntu 19 10 repos 0 58 new version 0 65 download hugo website'}}

标签: pythonpandas

解决方案


我认为您正在寻找的是:

data['tags'] = data['Tags'].apply(lambda x: ' '.join(x))

例子

ser = pd.Series([['python', 'windows', 'pip', 'pygame', 'pycharm'],
                 ['converters', 'dxf', 'dwg'],
                 ['python', 'regex', 'nlp'],
                 ['sql', 'join', 'dynamic', 'logic', 'case'],
                 ['r-markdown', 'hugo', 'blogdown']])

ser.apply(lambda x: ' '.join(x))

会产生

0    python windows pip pygame pycharm
1                   converters dxf dwg
2                     python regex nlp
3          sql join dynamic logic case
4             r-markdown hugo blogdown
dtype: object

如果您想要它与您展示的完全一样,那么您可以执行以下操作

ser.apply(lambda x: "'" + "', '".join(x) + "'")

这将产生

0    'python', 'windows', 'pip', 'pygame', 'pycharm'
1                         'converters', 'dxf', 'dwg'
2                           'python', 'regex', 'nlp'
3          'sql', 'join', 'dynamic', 'logic', 'case'
4                   'r-markdown', 'hugo', 'blogdown'
dtype: object

推荐阅读