如何在像 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 语法 WITH `cte` AS (VALUES ROW(1), ROW(2), ROW(n)) 转换为 jOOQ DSL?