【问题标题】:Creating a dataframe with datetime in different fields在不同字段中创建具有日期时间的数据框
【发布时间】:2018-09-03 01:21:40
【问题描述】:

我想要一个 ohlc 表来稍后分析蜡烛模式,使用当前代码如下所示,我可以看到我的 ohlc 表,但“蜡烛”与数据系列不匹配。

# my testing code
import pandas as pd

df = pd.read_csv('tmp/NEG_20180829.txt', header=None, delimiter="\;", skiprows=1,
          names=["Session Date", "Symbol", "Deal Number", "Deal Price",
          "Quantity", "Hour", "Ind Cancel", "Offer Date", "Seq Offer Date",
          "GenerationID", "Deal Condition", "Date Sell Offer", "Sequence Sell Offer",
          "Generation Id Sell", "Sell Condition", "Indicator", "Broker Buy", "Broker Sell"],
          )

df.index = pd.to_datetime(df.index, unit='m')
ticks = df.loc[df.index, ['Deal Price', 'Quantity']]
bars = ticks['Deal Price'].resample('1min', how='ohlc') 
print(bars)

和我的输出:

                      open   high    low  close
1970-01-01 00:00:00  18.50  18.50  18.50  18.50
1970-01-01 00:01:00  18.50  18.50  18.50  18.50
1970-01-01 00:02:00  18.50  18.50  18.50  18.50
1970-01-01 00:03:00  18.50  18.50  18.50  18.50
1970-01-01 00:04:00  18.50  18.50  18.50  18.50
1970-01-01 00:05:00  18.50  18.50  18.50  18.50
1970-01-01 00:06:00  18.50  18.50  18.50  18.50
1970-01-01 00:07:00  18.50  18.50  18.50  18.50
1970-01-01 00:08:00  18.50  18.50  18.50  18.50

看起来熊猫无法识别数据系列,因为正如我们在文件示例中看到的那样,日期和时间位于不同的字段中,我该如何合并它们?

文件示例:

2018-08-29;APPL                                             ;0000000290; 000000000018.500000;000000000000002200;10:08:11.899;1;2018-08-29;000082181828559;000000004182711;2;2018-08-29;000082181827277;000000004182712;2;0;00000308;00000021
2018-08-29;APPL                                             ;0000000300; 000000000018.500000;000000000000000100;10:08:11.899;1;2018-08-29;000082181828266;000000004182713;2;2018-08-29;000082181827277;000000004182714;2;0;00000308;00000021
2018-08-29;APPL                                             ;0000000390; 000000000018.500000;000000000000001000;10:08:11.899;1;2018-08-29;000082181826807;000000004182731;2;2018-08-29;000082181828365;000000004182732;2;0;00000003;00000386
2018-08-29;AAPL                                             ;0000000440; 000000000018.500000;000000000000000500;10:08:11.899;1;2018-08-29;000082181825761;000000004182741;2;2018-08-29;000082181827689;000000004182742;2;0;00000003;00000003

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    要合并两个字段并将它们转换为日期时间,您可以执行以下操作:

    df['datetime'] = pd.to_datetime(df['Session Date'] + ' ' +  df['Hour'])
    

    然后您可以使用df.set_index('datetime', inplace=True) 将此新列设置为索引并根据需要重新采样。

    【讨论】:

    • @Primehaxor 我只能建议将 pandas 更新到最新版本,或者如果这不起作用,请安装与以前计算机上相同的版本。
    • deps 是通过 pip freeze > requirements.txt 文件处理的。
    • @Primehaxor 你从 Linux 切换到 Windows 了吗?这可能与您在 CSV w.r.t 中的阅读方式有关。分隔符和换行符。
    • 你好 @Andrey 在这里你可以找到关于这个奇怪问题的更多细节 -> stackoverflow.com/questions/52355953/…
    • 足够公平,已删除
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2022-07-11
    • 2021-01-14
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多