当前位置: 首页 > 面试题库 >

在pandas数据列中访问total_seconds()

胡星汉
2023-03-14
问题内容

我想在pandas数据框中创建一个新列,该列是从数据框开始起经过的时间。我正在将日志文件导入具有数据时间信息的数据帧,但是无法访问其中的total_seconds()功能s_df['delta_t']。如果我访问列(s_df['delta_t'].iloc[8].total_seconds())的各个元素,则可以使用,但是我想用total_seconds()创建一个新列,而我的尝试失败了。

s_df['t'] = s_df.index  # s_df['t] is a column of datetime
s_df['delta_t'] = ( s_df['t'] - s_df['t'].iloc[0]) # time since start of data frame
s_df['elapsed_seconds'] = # want column s_df['delta_t'].total_seconds()

问题答案:

使用.dt访问器:

s_df['elapsed_seconds'] = s_df['delta_t'].dt.total_seconds()

例:

In [82]:
df = pd.DataFrame({'date': pd.date_range(dt.datetime(2010,1,1), dt.datetime(2010,2,1))})
df['delta'] = df['date'] - df['date'].iloc[0]
df

Out[82]:
         date   delta
0  2010-01-01  0 days
1  2010-01-02  1 days
2  2010-01-03  2 days
3  2010-01-04  3 days
4  2010-01-05  4 days
5  2010-01-06  5 days
6  2010-01-07  6 days
7  2010-01-08  7 days
8  2010-01-09  8 days
9  2010-01-10  9 days
10 2010-01-11 10 days
11 2010-01-12 11 days
12 2010-01-13 12 days
13 2010-01-14 13 days
14 2010-01-15 14 days
15 2010-01-16 15 days
16 2010-01-17 16 days
17 2010-01-18 17 days
18 2010-01-19 18 days
19 2010-01-20 19 days
20 2010-01-21 20 days
21 2010-01-22 21 days
22 2010-01-23 22 days
23 2010-01-24 23 days
24 2010-01-25 24 days
25 2010-01-26 25 days
26 2010-01-27 26 days
27 2010-01-28 27 days
28 2010-01-29 28 days
29 2010-01-30 29 days
30 2010-01-31 30 days
31 2010-02-01 31 days

In [83]:
df['total_seconds'] = df['delta'].dt.total_seconds()
df

Out[83]:
         date   delta  total_seconds
0  2010-01-01  0 days              0
1  2010-01-02  1 days          86400
2  2010-01-03  2 days         172800
3  2010-01-04  3 days         259200
4  2010-01-05  4 days         345600
5  2010-01-06  5 days         432000
6  2010-01-07  6 days         518400
7  2010-01-08  7 days         604800
8  2010-01-09  8 days         691200
9  2010-01-10  9 days         777600
10 2010-01-11 10 days         864000
11 2010-01-12 11 days         950400
12 2010-01-13 12 days        1036800
13 2010-01-14 13 days        1123200
14 2010-01-15 14 days        1209600
15 2010-01-16 15 days        1296000
16 2010-01-17 16 days        1382400
17 2010-01-18 17 days        1468800
18 2010-01-19 18 days        1555200
19 2010-01-20 19 days        1641600
20 2010-01-21 20 days        1728000
21 2010-01-22 21 days        1814400
22 2010-01-23 22 days        1900800
23 2010-01-24 23 days        1987200
24 2010-01-25 24 days        2073600
25 2010-01-26 25 days        2160000
26 2010-01-27 26 days        2246400
27 2010-01-28 27 days        2332800
28 2010-01-29 28 days        2419200
29 2010-01-30 29 days        2505600
30 2010-01-31 30 days        2592000
31 2010-02-01 31 days        2678400


 类似资料:
  • 问题内容: 我在不同的列中有数据,但是我不知道如何提取数据以将其保存在另一个变量中。 如何选择然后将其保存到df1中? 我试过了 似乎没有任何工作。 问题答案: 列名(字符串)无法按照你尝试的方式进行切片。 在这里,你有两个选择。如果从上下文中知道要切出哪些变量,则可以通过将列表传递给语法来仅返回那些列的视图。 或者,如果需要对它们进行数字索引而不是按其名称进行索引(例如,你的代码应在不知道前两列

  • 问题内容: 我有以下熊猫数据框: 产生此结果: 我如何传播,以便最终得到这个: 问题答案: 使用或: 但是,如果重复,需要或集合体,或可以改变,…: ValueError:索引包含重复的条目,无法重塑 编辑: 对于设置为和的清洁:

  • 问题内容: 我正在寻找一种使用Swift代码在我的应用程序中访问SQLite数据库的方法。 我知道我可以在Objective C中使用SQLite包装器并使用桥接头,但是我希望能够完全在Swift中完成此项目。如果可以的话,有没有办法做到这一点,有人可以将我指向一个引用,该引用显示了如何提交查询,检索行等。 问题答案: 虽然您可能应该使用许多SQLite包装器之一,但如果您想知道如何自己调用SQL

  • 问题内容: 我正在尝试遍历Python Pandas数据框的行。在数据帧的每一行中,我试图通过其列名引用行中的每个值。 这是我所拥有的: 我使用了这种方法来进行迭代,但这只是解决方案的一部分- 在每次迭代中选择一行后,如何通过列名称访问行元素? 这是我想做的事情: 我的理解是该行是熊猫系列。但是我无法索引该系列。 在遍历行的同时可以使用列名吗? 问题答案: 我也喜欢 由于行是一个名为元组,如果你打

  • 问题内容: 如何通过密钥访问groupby对象中的相应groupby数据帧? 通过以下groupby: rand = np.random.RandomState(1) df = pd.DataFrame({‘A’: [‘foo’, ‘bar’] * 3, ‘B’: rand.randn(6), ‘C’: rand.randint(0, 20, 6)}) gb = df.groupby([‘A’])

  • 问题内容: 我正在尝试在Express中编写一个愚蠢的简单Hello World程序,该程序输出有关当前HTTP请求的一些基本数据。 对于POST请求,我想查看原始POST正文。 当我关闭来自邮递员的任何类型的POST请求时,设置为。为什么是空的?如何打印原始POST数据?我不需要POST正文的解析版本,只需原始数据即可。 问题答案: 为了读取发布请求的正文,您需要body-parser。 如果您