如何将含日期与价格的文本转换为列表并生成DataFrame?
解决方案
1. 解析文本提取日期与价格
先把原始文本里的日期和对应价格拆分出来,假设你的文本是按月份分组、每行格式为「日期: 价格」的结构,用Python字符串处理就能实现:
示例代码
# 替换成你的实际原始文本内容 raw_text = """Oct 2022 1: € 50 2: — 3: € 60 4: — Nov 2022 1: € 45 2: € 55 3: — """ dates = [] prices = [] current_month = None target_year = 2022 # 逐行遍历处理 for line in raw_text.strip().split('\n'): line = line.strip() if not line: continue # 识别月份行 if line.endswith(str(target_year)): current_month = line.split()[0] continue # 拆分日期和价格 day_part, price_part = line.split(':', 1) day = day_part.strip() price_str = price_part.strip() # 拼接完整日期字符串 full_date = f"{day}-{current_month}-{target_year}" dates.append(full_date) # 处理价格:无价格标记转为None,有价格则提取数字 if price_str == '—': prices.append(None) else: # 提取欧元价格中的数字,比如"€ 50"转为50.0 price_num = float(price_str.split()[1]) prices.append(price_num)
2. 生成Pandas DataFrame
拿到日期和价格列表后,直接用Pandas构造DataFrame即可:
import pandas as pd # 创建DataFrame df = pd.DataFrame({ '日期': dates, '价格(€)': prices }) # 可选:将日期列转为datetime类型,方便后续日期相关操作 df['日期'] = pd.to_datetime(df['日期'], format='%d-%b-%Y') # 查看结果 print(df)
3. 适配不同文本格式的说明
如果你的原始文本是多列排版、表格样式等其他格式,只需要调整文本解析的逻辑——核心是先定位月份信息,再把每个日期和对应的价格一一匹配。另外,把无价格的「—」转为None后,Pandas会自动识别为NaN,方便后续做数据清洗或分析。
内容的提问来源于stack exchange,提问作者Lefteris Kyprianou
相关产品推荐
相关产品推荐

