如何将换行分隔字符串转换为含Date与Price列的DataFrame?
如何将给定字符串转换为包含Date和Price列的DataFrame
当然可以轻松把你提供的字符串转换成目标DataFrame!我来给你一步步实现:
首先,我们需要导入Pandas库,然后处理输入字符串,拆分出日期和价格信息,最后构建DataFrame。
完整代码实现
import pandas as pd # 你的输入字符串 input_str = """Title Today 1,239 € Yesterday 1,2 € 17/04/2018 1,2 € 14/04/2018 1,2 € 13/04/2018 1,2 € 12/04/2018 1,2 € 11/04/2018 1,2 € 09/04/2018 1,2 € 08/04/2018 1,2 € 07/04/2018 1,2 €""" # 按换行分割内容,跳过第一行的"Title" lines = input_str.split('\n')[1:] # 遍历每行,提取日期和价格数据 processed_data = [] for line in lines: # 从右侧拆分,确保日期部分(包含Today/Yesterday或具体日期)被完整提取 date, price_raw = line.rsplit(' ', 2)[:2] # 处理价格:把逗号替换为点,去掉欧元符号,转换为数值类型 price = float(price_raw.replace(',', '.')) processed_data.append({'Date': date, 'Price': price}) # 创建DataFrame df = pd.DataFrame(processed_data) # 查看结果 print(df)
运行结果
执行后你会得到如下DataFrame:
Date Price 0 Today 1239.0 1 Yesterday 1.2 2 17/04/2018 1.2 3 14/04/2018 1.2 4 13/04/2018 1.2 5 12/04/2018 1.2 6 11/04/2018 1.2 7 09/04/2018 1.2 8 08/04/2018 1.2 9 07/04/2018 1.2
扩展:将Today/Yesterday转换为实际日期
如果你希望把"Today"和"Yesterday"转换成具体的日期值,可以借助datetime模块实现:
from datetime import datetime, timedelta def convert_to_actual_date(date_str): if date_str == 'Today': return datetime.today().strftime('%d/%m/%Y') elif date_str == 'Yesterday': return (datetime.today() - timedelta(days=1)).strftime('%d/%m/%Y') else: return date_str # 更新Date列 df['Date'] = df['Date'].apply(convert_to_actual_date) # 可选:将Date列转换为datetime类型,方便后续时间相关操作 df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
这样处理后,"Today"会变成当前日期,"Yesterday"变成前一天的日期,且Date列会成为标准的datetime格式,适合做时间序列分析。
内容的提问来源于stack exchange,提问作者User 6683331
相关产品推荐
相关产品推荐

