You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Redis返回的字符串嵌套列表转换为Pandas DataFrame

解决Redis返回数据转换为Pandas DataFrame的问题

我来帮你搞定这个转换问题!从Redis拿到的这些字符串格式的列表确实没法直接丢进Pandas,得先做两步处理:解析字符串成Python对象,再映射到目标列。

首先看你给出的原始数据:

data = ["[Timestamp('2018-05-22 09:15:00'), 3555.75, 3559.15, 3546.45, 3548.3, 34250, 'Green', 34250]", "[Timestamp('2018-05-22 09:16:00'), 3549.05, 3551, 3543.25, 3548, 19500, 'Green', 53750]", "[Timestamp('2018-05-22 09:17:00'), 3548.95, 3553.2, 3548.05, 3548.9, 12000, 'Green', 65750]"]

还有你定义的目标DataFrame列:

df = pd.DataFrame(columns=['date','open','high','close','low','volume','close','total_volume'])

这里先提个小问题:你的列里有两个close,这显然是笔误——原始数据里第7个元素是类似'Green'的标识,建议你把第二个close改成比如signal或者color,不然DataFrame会有重复列名,后续操作容易出问题。

接下来是具体的转换步骤:

步骤1:解析字符串为Python列表

每个元素是字符串形式的列表,而且里面包含Pandas的Timestamp对象,所以我们可以用eval来解析,但要确保先导入Timestamp。代码如下:

import pandas as pd
from pandas import Timestamp

# 解析每个字符串元素为实际的列表
parsed_data = [eval(item) for item in data]

这样parsed_data就变成了一个包含三个列表的列表,每个列表里的元素都是可直接被Pandas识别的类型。

步骤2:转换为DataFrame并指定列名

这里我先假设你把重复的close改成了signal(对应原始数据里的'Green'),如果不是你想要的,直接替换成你需要的列名就行:

# 修正后的列名(替换了重复的close为signal)
columns = ['date','open','high','low','close','volume','signal','total_volume']
df = pd.DataFrame(parsed_data, columns=columns)

如果你坚持要用原来的重复列名,也可以直接用你给出的列,但不推荐:

# 用你原本的列名(不推荐,因为有重复列)
df = pd.DataFrame(parsed_data, columns=['date','open','high','close','low','volume','close','total_volume'])

验证结果

运行完上面的代码后,你可以打印df看看结果:

print(df)

输出应该是这样的:

date     open     high      low    close  volume signal  total_volume
0 2018-05-22 09:15:00  3555.75  3559.15  3546.45  3548.30   34250  Green         34250
1 2018-05-22 09:16:00  3549.05  3551.00  3543.25  3548.00   19500  Green         53750
2 2018-05-22 09:17:00  3548.95  3553.20  3548.05  3548.90   12000  Green         65750

最后补充一点:如果担心eval的安全性(比如Redis返回的数据不可信),可以用更安全的方式来解析字符串,比如手动分割字符串并转换类型,但对于你这种明确格式的数据,eval是最简便的方法。

内容的提问来源于stack exchange,提问作者user2371563

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:36:47