如何使用Python Pandas库改变数据

3
我有一个数据框,像这样:
import pandas as pd

x = [
    {
        "timestamp" :1576019484523,
        "status": "1"
    },
    {
        "timestamp" :1576019496337,
        "status": "0"
    },
    {
        "timestamp" :1576019548740,
        "status": "1"
    },
    {
        "timestamp" :1576020996586,
        "status": "0"
    }
]

data_frame = pd.DataFrame(x)

DataFrame
0  1576019484523      1
1  1576019496337      0
2  1576019548740      1
3  1576020996586      0

我希望将这个数据转化为以下格式:
[
    {
        "range" :"1576019484523 - 1576019496337",
        "status": "1"
    },
    {
        "range" : "1576019496337 - 1576019548740",
        "status": "0"
    },
    {
        "range" :"1576019548740 - 1576020996586",
        "status": "1"
    }
]

如果项目数目是奇数,我不知道如何解决。我想知道 pandas 中是否有任何函数或 python 中的任何函数可以帮助我。

[t0-t1] status 0
[t1-t2] status 1
[t2-t3] status 0
[t3-t4] status 1
2个回答

2

您可以不需要使用pandas,而是使用列表推导式来实现:

[{'range': f"{i['timestamp']} - {j['timestamp']}", 'status': i['status']}
  for i, j in zip(x, x[1:])]

[输出]

[{'range': '1576019484523 - 1576019496337', 'status': '1'},
 {'range': '1576019496337 - 1576019548740', 'status': '0'},
 {'range': '1576019548740 - 1576020996586', 'status': '1'}]

1
将时间戳转换为字符串并使用shift,然后导出为json。
data_frame['timestamp'] = data_frame['timestamp'].astype(str)
data_frame['timestamp'] = data_frame['timestamp'] + ' - '  + data_frame['timestamp'].shift(-1)
data_frame.dropna().to_json(orient='records')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接