Python2.7:如何基于这样的特殊字符串将一个列拆分为多个列?

Python2.7:如何基于这样的特殊字符串将一个列拆分为多个列?,python,python-2.7,pandas,split,multiple-columns,Python,Python 2.7,Pandas,Split,Multiple Columns,我是编程和python的新手,所以我非常感谢你的建议 我有一个这样的数据帧。 在“信息”栏中,有7个不同的类别:活动、地点、团体、技能、景点、类型和其他。而且每个类别在[]中都有唯一的值(即,“活动”:[“旅游”]) 我想根据每个类别将“信息”列拆分为7个不同的列,如下所示 我想为每一行分配适当的列名,并在[]中放置相应的唯一字符串 有没有什么简单的方法可以像那样分割数据帧? 我正在考虑使用str.split函数来拆分成多个片段,然后合并所有内容。但我不确定这是最好的方法,我想看看是否有更复杂

我是编程和python的新手,所以我非常感谢你的建议

我有一个这样的数据帧。 在“信息”栏中,有7个不同的类别:活动、地点、团体、技能、景点、类型和其他。而且每个类别在[]中都有唯一的值(即,“活动”:[“旅游”]) 我想根据每个类别将“信息”列拆分为7个不同的列,如下所示

我想为每一行分配适当的列名,并在[]中放置相应的唯一字符串

有没有什么简单的方法可以像那样分割数据帧? 我正在考虑使用str.split函数来拆分成多个片段,然后合并所有内容。但我不确定这是最好的方法,我想看看是否有更复杂的方法来制作这样的数据帧

任何建议都将不胜感激

--更新--

打印时(dframe['info']),它显示如下。

看起来
info
列的内容是JSON格式的,因此您可以轻松地将其解析为dict对象:

>>> import json
>>> s = '''{"activities": ["Tour"], "locations": ["Tokyo"], "groups": []}'''
>>> j = json.loads(s)
>>> j
{u'activities': [u'Tour'], u'locations': [u'Tokyo'], u'groups': []}

一旦你把数据作为一个命令,你可以用它做任何你喜欢的事情

好的,下面是操作方法:

import pandas as pd
import ast

#Initial Dataframe is df
mylist = list(df['info'])
mynewlist = []

for l in mylist:
    mynewlist.append(ast.literal_eval(l))

df_info = pd.DataFrame(mynewlist)

#Add columns of decoded info to the initial dataset
df_new = pd.concat([df,df_info],axis=1)

#Remove the column info
del df_new['info']

您可以使用json库来实现这一点

1) 导入json库

import json
2) 将该列的所有行转换为字符串,然后对所有行应用json.loads函数。在对象中插入结果

jsonO = df['info'].map(str).apply(json.loads)
3) Json对象现在是一个Json数据帧,您可以在其中导航。对于Json数据帧的每一列,在最终数据帧中创建一列

df['Activities'] = jsonO.apply(lambda x: x['Activities'])
这里,对于json数据帧的一列,每个“行”都转储到最终数据帧df的新列中


4) 对于您感兴趣的所有列,请重新执行3。请不要使用图像共享数据。实际上,您不需要json,因为您已经有了一个字典,很抱歉忽略了。我已经编辑了代码,请检查你是否得到了正确的答案谢谢你的建议!我运行了代码,但出现了一个错误。。上面写着“TypeError:无法将序列转换为”。我不确定是什么导致了这个错误,但我认为for循环导致了这个问题。。错误输出中有一个指向循环的箭头。你知道如何解决这个问题吗@高拉夫·达马希!感谢您提供修订版!我试过了,仍然得到了错误,上面写着“TypeError:无法将序列转换为”。。。如果你能提供一些见解,我将不胜感激:)你能发布打印输出(df['info'])我不知道如何在这里附加图像,但是打印['info']显示如下。0{“活动”:[“174::航海”],“地点”:[],…1{“活动”:[“239::考古勘探”…2{“活动”:[“239::玛雅废墟”],“地点”:…3{“活动”:[“190::野生动物狩猎”],“地点…”4{“活动”:[],“地点”:[],“团体”:[],“s…5{“活动”:[],“地点”:[],“团体”:s、 …您好@bgporter!非常感谢您的建议!至于建议的公式;s=''{“活动”:[“游览”],~},您认为我是否可以使用带有特定列的数据帧制作公式?因为Json格式在熊猫数据帧的info列中,我想做一些类似s=dframe['info']要提取info列中的所有行,但它不起作用。。。