如何在像 row(n)=row(n-1)+1 这样的 python pandas 列中添加 1?

Posted

技术标签:

【中文标题】如何在像 row(n)=row(n-1)+1 这样的 python pandas 列中添加 1?【英文标题】:How can I add 1s in a python pandas column like row(n)=row(n-1)+1? 【发布时间】:2021-03-25 01:04:39 【问题描述】:

我需要创建一个简单的 python-pandas 列,如下所示:

(1607674395.805080)
(1607674396.805080)
(1607674397.805080)
(1607674398.805080)
(1607674399.805080)

第一行是 (time.time()) (自纪元以来的时间),我想像 row(n)=row(n-1)+1s 一样添加 1 直到下一列结束以“数据”为例。

【问题讨论】:

【参考方案1】:

你可以使用移位方法:

import pandas as pd 
import numpy as np
import time
pd.set_option('display.float_format', lambda x: '%.3f' % x)
df = pd.DataFrame(dict(a=np.random.random(5)))
df['new'] = np.arange(df.shape[0]) + time.time() # <<< this is the line that does the magic
df['strs'] = '(' + df['new'].round(6).astype(str) + ')'
>>> df

    a       new             strs
0   0.119   1607948475.922  (1607948475.922189)
1   0.716   1607948476.922  (1607948476.922189)
2   0.561   1607948477.922  (1607948477.922189)
3   0.188   1607948478.922  (1607948478.922189)
4   0.995   1607948479.922  (1607948479.922189)

【讨论】:

我编辑了...第一次没看懂问题... 很好,谢谢,即使我不明白魔术是如何工作的 :) 我现在如何格式化“新”列以使 () 像 (1607946356.882) 字符串会很好,这只是因为我需要那样打印它 还有一个问题,如何将结果限制为 '.' 后的 6 个十进制数字? 而不是写np.arange(df.shape[0])(np.arange(df.shape[0]) / 1000)

以上是关于如何在像 row(n)=row(n-1)+1 这样的 python pandas 列中添加 1?的主要内容,如果未能解决你的问题,请参考以下文章

如何定时更新mysql一张表中的某个字段

打印指定顺序矩阵

如何将 MySQL 语法 WITH `cte` AS (VALUES ROW(1), ROW(2), ROW(n)) 转换为 jOOQ DSL?

八皇后II

Pandas groupby:如何按字符串的指定部分分组

如何分别保存 Keras 编码器和解码器