pandas 列中的总时间
Total time in pandas column
我正在处理数据框。我的专栏之一是日期时间格式。数据头看起来像这样
0 2022-01-18 15:26:35
1 2022-01-18 15:26:36
2 2022-01-18 15:26:37
3 2022-01-18 15:26:38
4 2022-01-18 15:26:39
Name: filename, dtype: datetime64[ns]
我有一个巨大的数据,并且在某些时候有中断,这意味着,我可能在晚上没有数据,我不希望那个时间被添加到总时间中。我想要以小时为单位的总时间,我试过了
totaltime = df["filename"].sum()
totaltime
我得到一个错误,'DatetimeArray' dtype datetime64[ns] 不支持缩减 'sum'。谁能帮帮我?
IIUC,您想要最大和最小日期之间的小时数:
t = pd.to_datetime(df['filename'])
delta = (t.max()-t.min()).total_seconds()/3600
输出:0.0011
最大和最小日期之间的总时间差。
您的数据:
from datetime import datetime
import time
temp = """
2022-01-18 15:26:35
2022-01-18 15:26:36
2022-01-18 15:26:37
2022-01-18 15:26:38
2022-01-18 15:26:39
"""
temp2 = io.StringIO(temp)
df = pd.read_csv(temp2, sep="\s",header=None)
df["filename"] = df[0] + " " + df[1]
df = df.drop(columns=[0,1])
# Convert column to datetime datatype
df["filename"] = pd.to_datetime(df["filename"], infer_datetime_format=True)
将它们解析为 strptime,以便您可以减去日期并得到它们之间的 range
。
maxTime = datetime.strptime(str(df.filename.max()), "%Y-%m-%d %H:%M:%S")
minTime = datetime.strptime(str(df.filename.min()), "%Y-%m-%d %H:%M:%S")
print(f"Range: ",maxTime-minTime)
# Range: 0:00:04
您可以试试下面的代码:
df[['colname']] = df[['colname']].apply(pd.to_datetime)
result = (df['colname'].max() - df['colname'].min()).dt.hour
使用numpy.ptp:
df = pd.read_clipboard(header=None, names=['filename'], sep='\s\s+')`
times = pd.to_datetime(df['filename'])
np.ptp(times)
输出(pd.Timedelta)
Timedelta('0 days 00:00:04')
我正在处理数据框。我的专栏之一是日期时间格式。数据头看起来像这样
0 2022-01-18 15:26:35
1 2022-01-18 15:26:36
2 2022-01-18 15:26:37
3 2022-01-18 15:26:38
4 2022-01-18 15:26:39
Name: filename, dtype: datetime64[ns]
我有一个巨大的数据,并且在某些时候有中断,这意味着,我可能在晚上没有数据,我不希望那个时间被添加到总时间中。我想要以小时为单位的总时间,我试过了
totaltime = df["filename"].sum()
totaltime
我得到一个错误,'DatetimeArray' dtype datetime64[ns] 不支持缩减 'sum'。谁能帮帮我?
IIUC,您想要最大和最小日期之间的小时数:
t = pd.to_datetime(df['filename'])
delta = (t.max()-t.min()).total_seconds()/3600
输出:0.0011
最大和最小日期之间的总时间差。
您的数据:
from datetime import datetime
import time
temp = """
2022-01-18 15:26:35
2022-01-18 15:26:36
2022-01-18 15:26:37
2022-01-18 15:26:38
2022-01-18 15:26:39
"""
temp2 = io.StringIO(temp)
df = pd.read_csv(temp2, sep="\s",header=None)
df["filename"] = df[0] + " " + df[1]
df = df.drop(columns=[0,1])
# Convert column to datetime datatype
df["filename"] = pd.to_datetime(df["filename"], infer_datetime_format=True)
将它们解析为 strptime,以便您可以减去日期并得到它们之间的 range
。
maxTime = datetime.strptime(str(df.filename.max()), "%Y-%m-%d %H:%M:%S")
minTime = datetime.strptime(str(df.filename.min()), "%Y-%m-%d %H:%M:%S")
print(f"Range: ",maxTime-minTime)
# Range: 0:00:04
您可以试试下面的代码:
df[['colname']] = df[['colname']].apply(pd.to_datetime)
result = (df['colname'].max() - df['colname'].min()).dt.hour
使用numpy.ptp:
df = pd.read_clipboard(header=None, names=['filename'], sep='\s\s+')`
times = pd.to_datetime(df['filename'])
np.ptp(times)
输出(pd.Timedelta)
Timedelta('0 days 00:00:04')