pandas 如何删除字典中每个子表的最后两个元素

z18hc3ub  于 2022-12-21  发布在  其他
关注(0)|答案(3)|浏览(110)

有没有可能从每个子列表中删除除第一个元素之外的所有元素,这些元素在dict中充当一个值,而不使用任何循环
设d =

[
    { "x":1640995200000, "y": [2365,2567.300049,2305,2386.600098] },
    { "x":1643673600000, "y": [2408,2456.399902,2243,2359.550049] },
    { "x":1646092800000, "y": [2359.550049,2688,2180,2634.750000] }
]

输出=

[
    { "x":1640995200000, "y": 2365 },
    { "x":1643673600000, "y": 2408 },
    { "x":1646092800000, "y": 2359.550049 }
]
c3frrgcw

c3frrgcw1#

使用某种类型的显式循环可以让读者/维护者更清楚地了解您要做什么。然而,如果您真的想混淆这个过程,那么您可以这样做:

d = [
    { "x":1640995200000, "y": [2365,2567.300049,2305,2386.600098] },
    { "x":1643673600000, "y": [2408,2456.399902,2243,2359.550049] },
    { "x":1646092800000, "y": [2359.550049,2688,2180,2634.750000] }
]

output = list(map(lambda _d: {'x': _d['x'], 'y': _d['y'][0]}, d))

print(output)
    • 输出:**
[{'x': 1640995200000, 'y': 2365}, {'x': 1643673600000, 'y': 2408}, {'x': 1646092800000, 'y': 2359.550049}]
eni9jsuy

eni9jsuy2#

假设每个列表中至少有一个元素。

d = [{"x":item["x"], "y": item["y"][0]} for item in d]

有关列表解析的更多信息,请访问https://www.w3schools.com/python/python_lists_comprehension.asp

lkaoscv7

lkaoscv73#

import pandas as pd
df = pd.DataFrame(d)
df['y'] = df['y'].apply(lambda x: x[0])
df.to_dict('records')

相关问题