【问题标题】:Joining panda dataframes with UK date format加入英国日期格式的熊猫数据框
【发布时间】:2026-02-21 08:45:01
【问题描述】:

我正在努力从包含 dd/mm/yyyy 的英国日期格式的 csv 文件中加入 panda 数据帧。

csv 文件中包含的数据是:

UK Date     Price
30/12/2015  120
31/12/2015  123
...         ... 
11/01/2016  135
12/01/2016  144

我的问题是与 11/01/2016 对应的数据在 DataFrame 上附加到 2016 年 11 月 1 日,相反,01/11/2016 行中的数据附加到 2016 年 1 月 11 日。

这是我用来在日期范围内创建 DataFrame 并连接来自临时数据帧的数据的简单代码:

# Define the dates
dates = pd.date_range('2015-12-01', '2018-06-07')

# Create an empty DataFrame
df1 = pd.DataFrame(index = dates)

# Read the data into a temp dataframe
dftemp = pd.read_csv("a.csv", index_col='UK Date', parse_dates = True,
                        usecols = ['UK Date', 'Price'])

# Join the two DataFrames
df1 = df1.join(dftemp, how='inner')

print df1

我不确定是否最好尝试将空白数据框日期转换为英国格式或在读取文件时更改格式?另外,更改格式的最佳方法是什么?

谢谢

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我相信最好的方法是通过参数dayfirst 转换为read_csv 中的datetimes:

    df = pd.read_csv("a.csv",
                     index_col='UK Date', 
                     parse_dates = True, 
                     dayfirst=True,
                     usecols = ['UK Date', 'Price'])
    

    to_datetime的另一种解决方案:

    df['UK Date'] = pd.to_datetime(df['UK Date'], dayfirst=True)
    #if need DatetimeIndex 
    #df.index = pd.to_datetime(df.index, dayfirst=True)
    

    或者:

    df['UK Date'] = pd.to_datetime(df['UK Date'], format='%d/%m/%Y')
    #if need DatetimeIndex 
    #df.index = pd.to_datetime(df.index, format='%d/%m/%Y')
    

    【讨论】:

    • 第一个解决方案就完美了,谢谢!感谢您也尝试其他选择
    最近更新 更多