Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从每个列中都包含字典或列表的数据框中获取信息?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何从每个列中都包含字典或列表的数据框中获取信息?

Python 如何从每个列中都包含字典或列表的数据框中获取信息?,python,pandas,dataframe,Python,Pandas,Dataframe,我有此信息,无法获取列serviceTypes和crowding的值: id name modeName中断线路状态服务类型拥挤 0皮卡迪利皮卡迪利管[][{'$type':'Tfl.Api.Presentation.Entities.Line…{'$type':'Tfl.Api.Presentation.Entities.Crowd。。。 1 victoria victoria tube[][{'$type':'Tfl.Api.Presentation.Entities.Line…{'$typ

我有此信息,无法获取列
serviceTypes
crowding
的值:

id name modeName中断线路状态服务类型拥挤
0皮卡迪利皮卡迪利管[][{'$type':'Tfl.Api.Presentation.Entities.Line…{'$type':'Tfl.Api.Presentation.Entities.Crowd。。。
1 victoria victoria tube[][{'$type':'Tfl.Api.Presentation.Entities.Line…{'$type':'Tfl.Api.Presentation.Entities.Crowd。。。
2 bakerloo bakerloo tube[][{'$type':'Tfl.Api.Presentation.Entities.Line…{'$type':'Tfl.Api.Presentation.Entities.Crowd。。。
3中央管[][[[{'$type':'Tfl.Api.Presentation.Entities.Line…{'$type':'Tfl.Api.Presentation.Entities.Crowd。
我尝试了以下代码:

def split(x, index):
    try:
        return x[index]
    except:
        return None
dflines['serviceTypes'] = dflines.serviceTypes.apply(lambda x:split(x,0))
dflines['crowding'] = dflines.crowding.apply(lambda x:split(x,1))

def values(x):
    try:
        return ';'.join('{}'.format(val) for  val in x.values())
    except:
        return None
m = dflines['serviceTypes'].apply(lambda x:values(x))
dflines1 = m.str.split(';', expand=True)
dflines1.columns = dflines['serviceTypes'][0].keys()
dflines2 = dflines1[['name']]
dflines2
但我有一个错误:

AttributeError回溯(最近一次调用)
在里面
14M=dflines['serviceTypes']。应用(λx:values(x))
15 dflines1=m.str.split(“;”,expand=True)
--->16 dflines1.columns=dflines['serviceTypes'][0]。键()
17 dflines2=dflines1[['name']]
18 dflines2
AttributeError:“str”对象没有属性“keys”

有人能帮我吗?

您可以将pandas列拉入如下列表:

service_types = dflines['serviceTypes']
第一个值现在是列表服务类型中的第一个值

first_value = service_types[0]
Pandas的工作原理与字典不同。我想您可能试图将数据框视为字典。如果我误解或过于简化,请道歉

编辑:

好的,看起来服务类型(上面)是一个字典列表。要编写列,使其仅包含需要索引到列表中然后索引到字典中的类型,请执行以下操作

service_types = dflines['serviceTypes']
types_alone = []
for i in service_types:
    types_alone.append(i['$type'][0])
dflines['new_column'] = types_alone

您可以将熊猫列拉入列表,如下所示:

service_types = dflines['serviceTypes']
第一个值现在是列表服务类型中的第一个值

first_value = service_types[0]
Pandas的工作原理与字典不同。我想您可能试图将数据框视为字典。如果我误解或过于简化,请道歉

编辑:

好的,看起来服务类型(上面)是一个字典列表。要编写列,使其仅包含需要索引到列表中然后索引到字典中的类型,请执行以下操作

service_types = dflines['serviceTypes']
types_alone = []
for i in service_types:
    types_alone.append(i['$type'][0])
dflines['new_column'] = types_alone


keys()
用于dictionary。但是列serviceType中的值是一个
字符串
。因此它失败了。只需删除
。keys()
即可获取列值应该是df['servicetypes'][0][0]。keys()@biratex它不起作用,我有以下错误:TypeError:Index(…)必须使用某种类型的集合调用,[]已传递..有想法吗?@ParijatBhatt,没有,它在此代码中不起作用..有想法吗?您可以在此处发布数据帧或csv的源代码
keys()
用于dictionary。但是列serviceType中的值是一个
字符串
。因此它失败了。只需删除
。keys()
即可获取列值。它应该是df['servicetypes'][0][0]。keys()@biratex它不起作用,我有以下错误:TypeError:Index(…)必须用某种集合调用,'['已通过..有想法吗?@ParijatBhatt,没有,在这段代码中不起作用..有想法吗?你能把数据帧或csv的源发到这里吗?她正在尝试访问服务类型col中的第一个值,然后访问其中第一个值的键list@angrymantis,您能告诉我如何在数据帧中获取这些值吗?请因为我需要在dataframe中获取servicesTypes和crowding您的意思是要重写serviceTypes列,使其仅包含类型吗?@angrymantis我想从serviceTypes和crowding列中提取值,以获取它们,并在连接到原始dataframe后获得完整的information@Alexa我想是我干的n编辑。是否只有一个值与键“$type”关联?她正在尝试访问服务类型列中的第一个值,然后访问该列中第一个值的键list@angrymantis,您能告诉我如何在数据框中获取这些值吗?因为我需要在数据框中获取ServicesType和拥挤o您的意思是要重写serviceTypes列,使其仅包含类型?@angrymantis我想从serviceTypes和crowding列中提取值,以获取它们,并在连接到原始数据帧之后,获得完整的数据information@Alexa我想我是在编辑时这么做的。只有一个值是正确的吗使用“$type”键的ted?