csv 如何合并列和更改时区?

ffscu2ro  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(124)

x1c 0d1x的数据
我想将DATETIME列合并为一个“date&time”列,并将时区从布鲁塞尔更改为纽约。我试过:

import pandas as pd

#df = pd.read_csv('ES.csv', parse_dates=True)
df = pd.read_csv('ES.csv')
df_small = df[-10:]
df_small['dateandtime'] = df['DATE'].astype(str) + df['TIME'].astype(str)
df_small.info()
df_small.to_frame(name='new')
df_small.to_frame(name='new').to_csv('new.csv')

字符串
错误和警告:

SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

df_small.to_frame(name='new')
AttributeError: 'DataFrame' object has no attribute 'to_frame'


如果你让它工作,你可以有完整的CSV文件,我认为这是值得500美元-3000美元(10年的金融1分钟间隔标准普尔500期货数据)。

yh2wf1be

yh2wf1be1#

你可以使用.cat来合并列,pop()来删除旧的列,to_localize()作为布鲁塞尔tz,.tz_convert()作为纽约tz。将DatetimeIndex转换为str将比将其保留为datetime花费更多的时间:

df_small["dateandtime"] = (pd
                           .to_datetime(df_small.pop("DATE").str.cat(df_small.pop("TIME"), sep=" "))
                           .dt.tz_localize("Europe/Brussels")
                           .dt.tz_convert("America/New_York")
                           )
df_small = df_small.set_index(pd.DatetimeIndex(df_small.pop("dateandtime")))
df_small.index = df_small.index.strftime("%Y-%m-%d %H:%M")

字符串
输出量:

OPEN    HIGH     LOW   CLOSE  VOLUME
dateandtime                                             
2010-01-03 18:01 1113.75 1114.75 1113.25 1114.25    2185
2010-01-03 18:02 1114.25 1115.25 1114.25 1114.75     437
2010-01-03 18:03 1114.75 1114.75 1114.25  1114.5     596
2010-01-03 18:04 1114.25 1114.75 1114.25  1114.5     131
2010-01-03 18:05  1114.5  1114.5 1114.25 1114.25     166

相关问题