如何修改数据框内的列表值?我正在尝试调整JSON收到的数据,DataFrame如下: 数据框在一个列表中有“多个字典”。
Dataframe df:
id options
0 0 [{'a':1 ,'b':2, 'c':3, 'd':4},{'a':5 ,'b':6, 'c':7, 'd':8}]
1 1 [{'a':9 ,'b':10, 'c':11, 'd':12},{'a':13 ,'b':14, 'c':15, 'd':16}]
2 2 [{'a':9 ,'b':10, 'c':11, 'd':12},{'a':17 ,'b':18, 'c':19, 'd':20}]
如果我只想在选项中使用'a'和'c'键/值,我该如何修改数据名?预期的结果是
Dataframe df:
id options
0 0 [{'a':1 ,'c':3},{'a':5 ,'c':7}]
1 1 [{'a':9, 'c':11},{'a':13,'c':15}]
2 2 [{'a':9 ,'c':11},{'a':17,c':19}]
我尝试过滤但我无法将值分配给数据框
for x in totaldf['options']:
for y in x:
y = {a: y[a], 'c': y['c']} ...?
答案 0 :(得分:2)
使用嵌套列出的理解:
df['options'] = [[{'a': y['a'], 'c': y['b']} for y in x] for x in df['options']]
如果你想使用for循环,那就像是:
new_options = []
for x in df['options']:
row = []
for y in x:
row.append({a: y[a], 'c': y['c']})
new_options.append(row)
df['options'] = new_options
答案 1 :(得分:1)
# An alternative vectorized solution.
df.options = df.options.apply(lambda x: [{k:v for k,v in e.items() if k in['a','c']} for e in x])
Out[398]:
id options
0 0 [{'a': 1, 'c': 3}, {'a': 5, 'c': 7}]
1 1 [{'a': 9, 'c': 11}, {'a': 13, 'c': 15}]
2 2 [{'a': 9, 'c': 11}, {'a': 17, 'c': 19}]