gpt4 book ai didi

python - pandas - 将包含字符串的列和包含 int 的列解析为日期时间

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:03 25 4
gpt4 key购买 nike

我的数据中,一列(例如第 0 列)包含“%Y-%m-%d %H:%M:%S”等字符串,另一列(例如第 1 列)包含数百秒的整数。我想将两列一起读入数据框的索引中。使用

parse = lambda d: dt.datetime.strptime(d,'%Y-%m-%d %H:%M:%S %f')
df = pd.read_csv(myFile, sep=';', index_col=0, parse_dates=[[0,1]], \
keep_date_col=True, date_parser=parse)

但是,会将所有整数 1,2,...9 视为表示 10,20,...90 每秒数百。例如。第 0 列中的 '2013-3-27 09:00:01' 和第 1 列中的 9 将被翻译为 Timestamp('2013-03-27 09:00:01.900000', tz=None),而不是 Timestamp('2013 -03-27 09:00:01.090000', tz=无)

我猜 date_parser 函数将 9 视为“9”,但需要将其解释为“09”。我该如何解决这个问题?

编辑:

df = pd.read_csv(myFile, sep=';') 
# with column 'TIMESTAMP' containing the strings and column 'HSEC' containing \
# the ints with the hundreds of seconds

df['newTimestamp'] = pd.to_datetime(df['TIMESTAMP'],format='%Y-%m-%d %H:%M:%S').add(pd.to_timedelta(dataOB['HSEC']*10000000)
dataOB.set_index('new',inplace=True)
dataOB.sort_index(inplace=True)

(不知何故,解决方案通常只有在我在这里发布问题后才会出现,尽管在进入论坛之前已经花了几个小时寻找它。不过,希望它对其他人也有用。)

最佳答案

一些虚拟数据

df = pd.read_csv(StringIO("""col1;col2;col3
2014-07-16 14:23:46;1;12
2014-07-16 14:23:53;5;12
2014-07-16 14:23:55;10;12
2014-07-16 14:23:59;15;12
2014-07-16 14:23:59;20;12
2014-07-16 14:24:00;25;12"""), sep=';')

与其在 read_csv 步骤中处理所有问题,首先读取数据,然后合并列可能会更容易,就像这样?

df['date'] = df['col1'] + '.' +  df['col2'].apply(lambda x: str(x).zfill(2))

然后您可以将组合列传递给 pd.to_datetime 并设置索引。

df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')

关于python - pandas - 将包含字符串的列和包含 int 的列解析为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com