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

包含在 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

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

谢谢

最佳答案

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

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')

关于python - 使用英国日期格式加入 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50756563/

10-12 16:46
查看更多