如何从 csv 文件中的多列创建 datetime/timestamp

How do you create a datetime/timestamp from multiple columns in a csv file

我正在使用 pandas 读取一个 csv 文件,其中第一列包含年份,第二列包含月份,第三列包含日期,第四列包含小时,以及海平面在第五个 (csv layout).

我想使用导入的列来计算“日期时间”或“时间戳”,然后将其另存为数据框中的新列。这个新列的格式应类似于此处的示例:1985-01-01 01:00:00+00:00.

pd.to_datetime 非常方便。假设列被适当地命名,它们可以很容易地传入。

鉴于此 DataFrame:

df = pd.DataFrame([[1973, 3, 1, 6, 740], [1973, 3, 1, 7, 750]],
                  columns=list('ABCDE'))

      A  B  C  D    E
0  1973  3  1  6  740
1  1973  3  1  7  750

rename 如果需要:

df = df.rename(columns={'A': 'year', 'B': 'month', 'C': 'day', 'D': 'hour'})

   year  month  day  hour    E
0  1973      3    1     6  740
1  1973      3    1     7  750

然后在 yearmonthdayhour:

上调用 pd.to_datetime
df['new_col'] = pd.to_datetime(df[['year', 'month', 'day', 'hour']])
   year  month  day  hour    E             new_col
0  1973      3    1     6  740 1973-03-01 06:00:00
1  1973      3    1     7  750 1973-03-01 07:00:00

一起:

df = pd.DataFrame([[1973, 3, 1, 6, 740], [1973, 3, 1, 7, 750]],
                  columns=list('ABCDE'))

df = df.rename(columns={'A': 'year', 'B': 'month', 'C': 'day', 'D': 'hour'})
df['new_col'] = pd.to_datetime(df[['year', 'month', 'day', 'hour']])

rename + pd.to_datetime 不影响 df:

df = pd.DataFrame([[1973, 3, 1, 6, 740], [1973, 3, 1, 7, 750]],
                  columns=list('ABCDE'))

df['new_col'] = pd.to_datetime(
    df[['A', 'B', 'C', 'D']]
        .rename(columns={'A': 'year', 'B': 'month', 'C': 'day', 'D': 'hour'})
)

注意 dfABCD 在 datetime 调用之外不受影响:

      A  B  C  D    E             new_col
0  1973  3  1  6  740 1973-03-01 06:00:00
1  1973  3  1  7  750 1973-03-01 07:00:00