好的,所以我有一个数据框。 “ z”列的每个元素都是字典列表。
例如,列“ z”的第二行如下所示:
[ {'name': 'Tom', 'hw': [180, 79]},
{'name': 'Mark', 'hw': [119, 65]} ]
我希望它只包含'name'值,在这种情况下,元素将是Tom和Mark而没有'hw'值。
我尝试将其转换为列表,然后删除第二个元素,但是我丢失了来自同一行的值。并非每一行都具有相同数量的元素,有些具有2个名称,有些可能具有4个。
答案 0 :(得分:4)
将list comprehension
与dict.get
结合使用的一种方法:
df = pd.DataFrame({'z': [[{'name': 'Tom', 'hw': [180, 79]},
{'name': 'Mark', 'hw': [119, 65]}]]})
df['name'] = [[d.get('name') for d in x] for x in df['z']]
[出]
z name
0 [{'name': 'Tom', 'hw': [180, 79]}, {'name': 'M... [Tom, Mark]
答案 1 :(得分:4)
让我们使用series.str.get
来使用pandas
get
df['name']=df.col.str.get('name')
df
col name
0 {'name': 'Tom', 'hw': [180, 79]} Tom
1 {'name': 'Mark', 'hw': [119, 65]} Mark