【问题标题】:How can I add 1s in a python pandas column like row(n)=row(n-1)+1?如何在像 row(n)=row(n-1)+1 这样的 python pandas 列中添加 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 直到下一列结束以“数据”为例。

【问题讨论】:

    标签: python pandas time epoch


    【解决方案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)
    猜你喜欢
    • 1970-01-01
    • 2021-10-08
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 2023-02-16
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多