如何从Pandas DataFrame生成指定格式的元组列表?
从Pandas DataFrame生成指定结构的元组列表
原始数据(data.csv)
,Date,Open,High,Low,Close,min,max 2022-10-03 12:00:00+01:00,19268.458333333332,141.95199584960938,141.97999572753906,141.30999755859375,141.42999267578125,141.42999267578125, 2022-10-04 16:00:00+01:00,19269.625,143.83799743652344,144.07699584960938,143.72999572753906,143.99000549316406,,143.99000549316406 2022-10-05 15:00:00+01:00,19270.583333333332,142.83299255371094,142.87100219726562,142.4199981689453,142.66000366210938,142.66000366210938, 2022-10-06 06:00:00+01:00,19271.208333333332,143.36000061035156,143.43600463867188,143.24000549316406,143.4010009765625,,143.4010009765625 2022-10-07 13:00:00+01:00,19272.5,141.85899353027344,142.1219940185547,141.17999267578125,141.45599365234375,141.45599365234375,
目标元组列表结构
需要生成相邻行配对的元组列表,格式如下:
tuples_list = [ ('2022-10-03', 141.42999267578125), ('2022-10-04', 143.99000549316406), # row[0-1] ('2022-10-04', 143.99000549316406), ('2022-10-05', 142.66000366210938), # row[1-2] ('2022-10-05', 142.66000366210938), ('2022-10-06', 143.4010009765625), # row[2-3] ('2022-10-06', 143.4010009765625), ('2022-10-07', 141.45599365234375), # row[3-4] ]
解决方案代码
import pandas as pd # 读取csv,将第一列设为索引(日期时间列) df = pd.read_csv('data.csv', index_col=0) # 处理索引,提取仅日期部分,并和Close字段组成基础元组列表 base_tuples = [ (idx.split(' ')[0], row['Close']) for idx, row in df.iterrows() ] # 构建目标格式的元组列表:遍历相邻元组,依次添加 tuples_list = [] for i in range(len(base_tuples) - 1): tuples_list.append(base_tuples[i]) tuples_list.append(base_tuples[i+1]) # 打印结果验证 print(tuples_list)
代码说明
- 读取数据:用
read_csv加载文件,指定第一列为索引(原始数据的第一列是带时区的日期时间)。 - 生成基础元组:遍历DataFrame的每一行,将索引(日期时间)按空格分割取前半部分(纯日期),和
Close字段值组成元组,存入base_tuples。 - 构建目标列表:遍历
base_tuples的相邻元素,依次将当前元组和下一个元组添加到结果列表,实现相邻行配对的结构。
内容的提问来源于stack exchange,提问作者tiberhockey
相关产品推荐
相关产品推荐

