将字符串日期时间替换为 pandas 数据框中的纪元
replace string datetime to epoch in pandas dataframe
我的数据框看起来像:
Time,User,value
2018-03-30T14:18:49.600,U101,23
2018-03-30T14:18:49.800,U102,22
2018-03-30T14:18:50.000,U101,24
我想在 DataFrame 的 Time
列中将字符串时间戳更改为以毫秒为单位的纪元。我可以通过将值保存在列表列表中并遍历每一行来做到这一点。但是我需要一种有效的方法,这样我就可以在 Dataframe 本身中将字符串时间替换为纪元时间。提前致谢。
我不知道 'epoch' 适合你,但总的来说 pandas.apply
功能是你想要的。它的工作原理类似于 map
在 python 内置函数中的作用。 (假设 timestamp.epoch
returns 时间戳的纪元)
import datetime as dt
def helper(val):
time = dt.datetime.strptime(dtstring, '%Y-%m-%d %H:%M:%S.%f')
return dt.epoch()
df['Time'] = df['Time'].apply(helper)
我认为需要转换 to_datetime
,然后转换为 numpy array
,转换为 int64
,最后除以 10**6
,因为本机格式在 nanosecond
中:
df['Time'] = pd.to_datetime(df['Time']).values.astype(np.int64) // 10**6
print (df)
Time User value
0 1522419529600 U101 23
1 1522419529800 U102 22
2 1522419530000 U101 24
df['Time'] = (df['Time'] - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')
是pandas、reference.
的推荐方案
示例:
import pandas as pd
df = pd.DataFrame()
df['Time'] = pd.date_range('2012-10-08 18:15:05', periods=4, freq='D')
df['Epoch'] = (df['Time'] - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')
print(df)
输出:
Time Epoch
0 2012-10-08 18:15:05 1349720105
1 2012-10-09 18:15:05 1349806505
2 2012-10-10 18:15:05 1349892905
3 2012-10-11 18:15:05 1349979305
我的数据框看起来像:
Time,User,value
2018-03-30T14:18:49.600,U101,23
2018-03-30T14:18:49.800,U102,22
2018-03-30T14:18:50.000,U101,24
我想在 DataFrame 的 Time
列中将字符串时间戳更改为以毫秒为单位的纪元。我可以通过将值保存在列表列表中并遍历每一行来做到这一点。但是我需要一种有效的方法,这样我就可以在 Dataframe 本身中将字符串时间替换为纪元时间。提前致谢。
我不知道 'epoch' 适合你,但总的来说 pandas.apply
功能是你想要的。它的工作原理类似于 map
在 python 内置函数中的作用。 (假设 timestamp.epoch
returns 时间戳的纪元)
import datetime as dt
def helper(val):
time = dt.datetime.strptime(dtstring, '%Y-%m-%d %H:%M:%S.%f')
return dt.epoch()
df['Time'] = df['Time'].apply(helper)
我认为需要转换 to_datetime
,然后转换为 numpy array
,转换为 int64
,最后除以 10**6
,因为本机格式在 nanosecond
中:
df['Time'] = pd.to_datetime(df['Time']).values.astype(np.int64) // 10**6
print (df)
Time User value
0 1522419529600 U101 23
1 1522419529800 U102 22
2 1522419530000 U101 24
df['Time'] = (df['Time'] - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')
是pandas、reference.
的推荐方案示例:
import pandas as pd
df = pd.DataFrame()
df['Time'] = pd.date_range('2012-10-08 18:15:05', periods=4, freq='D')
df['Epoch'] = (df['Time'] - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')
print(df)
输出:
Time Epoch
0 2012-10-08 18:15:05 1349720105
1 2012-10-09 18:15:05 1349806505
2 2012-10-10 18:15:05 1349892905
3 2012-10-11 18:15:05 1349979305