如何从 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
然后在 year
、month
、day
、hour
:
上调用 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'})
)
注意 df
列 A
、B
、C
、D
在 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
我正在使用 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
然后在 year
、month
、day
、hour
:
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'})
)
注意 df
列 A
、B
、C
、D
在 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