Python 如何将时间戳列中的值转换为数字

Python 如何将时间戳列中的值转换为数字,python,python-3.x,pandas,timestamp,Python,Python 3.x,Pandas,Timestamp,我有一个数据帧: id timestamp 1 "2025-08-02 19:08:59" 1 "2025-08-02 19:08:59" 1 "2025-08-02 19:09:59" 我需要将时间戳转换为整数来迭代条件。看起来是这样的: id timestamp 1 20250802190859 1

我有一个数据帧:

id          timestamp
1           "2025-08-02 19:08:59"
1           "2025-08-02 19:08:59"
1           "2025-08-02 19:09:59"
我需要将时间戳转换为整数来迭代条件。看起来是这样的:

id          timestamp
1           20250802190859
1           20250802190859
1           20250802190959

您可以使用熊猫串转换字符串:

df = pd.DataFrame({'id':[1,1,1],'timestamp':["2025-08-02 19:08:59",
"2025-08-02 19:08:59",
"2025-08-02 19:09:59"]})
pd.set_option('display.float_format', lambda x: '%.3f' % x)
df['timestamp'] = df['timestamp'].str.replace(r'[-\s:]', '').astype('float64')
>>> df
  id          timestamp
0   1 20250802190859.000
1   1 20250802190859.000
2   1 20250802190959.000

您可以使用本文中提供的解决方案,并在数据帧中循环

假设您已经导入了pandas并拥有一个dataframe df,请参见下面的附加代码:

import re
df = pd.DataFrame(l)
df1 = df.copy()
for x in range(len(df[0])):
    df1[0][x] = re.sub(r'\D','', df[0][x])
这样,您将不会修改原始数据帧df,并将在新的数据帧df1中获得所需的输出

我尝试的完整代码包括创建第一个数据帧,这可能有助于消除任何混淆:

import pandas as pd
import re
l = ["2025-08-02 19:08:59", "2025-08-02 19:08:59", "2025-08-02 19:09:59"]
df = pd.DataFrame(l)
df1 = df.copy()
for x in range(len(df[0])):
    df1[0][x] = re.sub(r'\D','', df[0][x])

您是否尝试过打开文件,跳过第一行或更好:验证它是否包含预期的标题字段,并在第一个空格/制表符/空白处对每行进行拆分。第二部分,例如2025-08-02 19:08:59,可以使用进行解析。然后,可以使用with将datetime对象转换回字符串,例如,format='%Y%m%d%H%m%S'。请注意,strftime中没有毫秒格式。您可以使用%f达微秒


注意:如果datetime.fromisoformat无法解析日期,请尝试使用其他格式,例如,格式=“%Y-%m-%d%H:%m:%S”。

@thepuntingh很容易检查列时间戳是否为datetime64。然后使用df['timestamp'].dt.strftime“%Y%m%d%H%m%S”AttributeError:只能使用带字符串值的.str访问器!我复制了你的例子。。。请给我们一个正常的输入,认真回答这些问题如果您的TITYPE是datetime请执行以下操作:pd.to_datetimedf['timestamp'].dt.strftime“%Y%m%d%H%m%S”