【问题标题】:Setting datetime values in pandas column: type not converting correctly在 pandas 列中设置日期时间值:类型转换不正确
【发布时间】:2016-06-18 10:55:45
【问题描述】:

我正在尝试将 pandas DataFrame 的列中的值设置为另一个 pandas DataFrame 中的列的值。我遇到了类型 (pandas.tslib.Timestamp) 未正确转换的问题。

我有一个 DataFrame indicators:

                           0
                   Timestamp
0  2016-02-12 13:45:00-05:00
1  2016-02-16 13:45:00-05:00
2  2016-02-17 13:45:00-05:00
3  2016-02-18 13:45:00-05:00
4  2016-02-19 13:45:00-05:00
5  2016-02-22 13:45:00-05:00
6  2016-02-24 13:45:00-05:00
7  2016-02-25 13:45:00-05:00
8  2016-02-26 13:45:00-05:00
9  2016-02-29 13:45:00-05:00
10 2016-03-01 13:45:00-05:00
11 2016-03-02 13:45:00-05:00
12 2016-03-03 13:45:00-05:00

还有另一个 DataFrame signals:

        Signal Timestamp
0    0     NaN       NaN
     1     NaN       NaN
     2     NaN       NaN
     3     NaN       NaN
     4     NaN       NaN
     5     NaN       NaN
     6     NaN       NaN
     7     NaN       NaN
     8     NaN       NaN
     9     NaN       NaN
     10    NaN       NaN
     11    NaN       NaN
     12    NaN       NaN

signals.info():

<class 'pandas.core.frame.DataFrame'>
MultiIndex: 19500 entries, (0, 0) to (1499, 12)
Data columns (total 2 columns):
Signal       0 non-null object
Timestamp    0 non-null object
dtypes: object(2)
memory usage: 457.0+ KB

我尝试做:

signals['Timestamp'][0] = indicators[0]['Timestamp']

产生

        Signal            Timestamp
0    0     NaN  1455302700000000000
     1     NaN  1455648300000000000
     2     NaN  1455734700000000000
     3     NaN  1455821100000000000
     4     NaN  1455907500000000000
     5     NaN  1456166700000000000
     6     NaN  1456339500000000000
     7     NaN  1456425900000000000
     8     NaN  1456512300000000000
     9     NaN  1456771500000000000
     10    NaN  1456857900000000000
     11    NaN  1456944300000000000
     12    NaN  1457030700000000000

如何正确转换?

【问题讨论】:

  • 你的 python、numpy 和 pandas 版本是什么?
  • Python 是 3.4.4,pandas 0.17.1,numpy 是 1.11.0b2
  • 好的,signals.info() 显示什么?
  • 过去使用 JSON 和 Pandas 我发现它们的变化量为 1000。JSON->PANDAS (1456174020000/1000)/86400 + 25569+(-5/24) 给出 13数字到 10 到带有时间戳的日期。你可以扭转它吗?
  • 如果您 (1) 事先将 signals['TimeStamp'] 转换为日期时间,或者 (2) 事先删除 signals['TimeStamp'] 列怎么办?我想问题是您正在将日期时间转换为字符串,而熊猫正在做一些事情,例如将日期时间转换为整数然后字符串。

标签: python python-3.x pandas dataframe


【解决方案1】:

我最终做了

signals['Timestamp'][0] = indicators[0]['Timestamp'].set_index('Timestamp').index

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多