我正在尝试从类型为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
答案 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']
如果名称可以不同,则可以获取字典中键的列表,然后在该列表上应用正则表达式以获取字段的名称。
希望它可以为您提供帮助。