熊猫-从系列中提取数据

时间:2019-11-20 08:53:44

标签: python regex pandas

我正在尝试从类型为pandas.core.series.Series的列中提取数据。

我尝试了

df['col1'] = df['details'].astype(str).str.findall(r'name\=(.*?),') 

但是上面的返回null

以下是df['details']列中数据的样子

[{'id': 101, 'name': 'Name1', 'state': 'active', 'boardId': 101, 'goal': '', 'startDate': '2019-01-01T12:16:20.296Z', 'endDate': '2019-02-01T11:16:00.000Z'}]

尝试提取与name字段对应的值

预期输出Name1

3 个答案:

答案 0 :(得分:1)

import pandas as pd
df = pd.DataFrame([{'id': 101, 'name': 'Name1', 'state': 'active', 'boardId': 101, 'goal': '', 'startDate': '2019-01-01T12:16:20.296Z', 'endDate': '2019-02-01T11:16:00.000Z'}])

#Name column
print(df.name)

#Find specific values in Series

indeces = df.name.str.find("Name") #Returns indeces of such values

df.iloc[index] # Returns all columns that fields name contain "Name"

df.name.iloc[index] # Returns all values from column name, which contain "Name"

希望,本示例将为您提供帮助。

编辑: 您的数据框具有“详细信息”列,其中包含字典{'id':101,...}

>>> df['details']
0    {'id': 101, 'name': 'Name1', 'state': 'active'...

您想从“名称”字段中获取价值,所以只需尝试:

>>> df['details'][0]['name']
'Name1'

答案 1 :(得分:1)

尝试一下:简单,根据需要进行更改。

import pandas as pd

df = pd.DataFrame([{'id': 101, 'name': 'Name1', 'state': 'active', 'boardId': 101, 'goal': '', 'startDate': '2019-01-01T12:16:20.296Z', 'endDate': '2019-02-01T11:16:00.000Z'}])
print(df['name'][0])    

#或者如果DataFrame本身位于列中

df['details'][0]['name']

注意:正如您提到的那样,详细信息是现有数据集中的数据集之一

答案 2 :(得分:1)

系列中的结构是字典。

[{'id': 101, 'name': 'Name1', 'state': 'active', 'boardId': 101, 'goal': '', 'startDate': '2019-01-01T12:16:20.296Z', 'endDate': '2019-02-01T11:16:00.000Z'}]

您可以使用以下命令指向该字典中的元素“名称”

df['details'][0]['name']

如果名称可以不同,则可以获取字典中键的列表,然后在该列表上应用正则表达式以获取字段的名称。

希望它可以为您提供帮助。