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

如何将换行分隔字符串转换为含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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:57