在python

时间:2018-07-06 12:19:08

标签: python pandas date dataframe

我是Python的新手,我希望我的问题不要傻... 我想加入pandas DataFrame(f1和f3),看来索引是不同的。

f1:

DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
           '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08',
           '2018-01-09', '2018-01-10',
           ...
           '2018-12-22', '2018-12-23', '2018-12-24', '2018-12-25',
           '2018-12-26', '2018-12-27', '2018-12-28', '2018-12-29',
           '2018-12-30', '2018-12-31'],
          dtype='datetime64[ns]', name='date', length=365, freq=None)

f3:

Index([2018-01-01, 2018-01-02, 2018-01-07, 2018-03-30, 2018-04-01, 2018-04-02,
   2018-05-01, 2018-05-10, 2018-05-20, 2018-05-21, 2018-06-04, 2018-08-01,
   2018-12-25, 2018-12-26],
  dtype='object')

现在,如果我按照cat = [f1,f3]的顺序加入他们,
cat_total = pd.concat(cat, axis=1, sort=False)似乎有效,正确的结果如下所示:

    print(cat.head())
            weekday       holidays
2018-01-01        0   Neujahrestag
2018-01-02        1  Berchtoldstag
2018-01-03        2            NaN
2018-01-04        3            NaN
2018-01-05        4            NaN

如果我更改为cat的顺序,例如cat = [f3,f1],则无法正常运行...

print(cat)
                             holidays  weekday
2018-01-01               Neujahrestag        0
2018-01-02              Berchtoldstag        1
2018-01-07                  Test ZH 1        6
2018-03-30                 Karfreitag        4
2018-04-01                     Ostern        6
2018-04-02                Ostermontag        0
2018-05-01             Tag der Arbeit        1
2018-05-10                   Auffahrt        3
2018-05-20                  Pfingsten        6
2018-05-21              Pfingstmontag        0
2018-06-04                  Test ZH 2        0
2018-08-01           Nationalfeiertag        2
2018-12-25                Weihnachten        1
2018-12-26                Stephanstag        2
2018-01-01 00:00:00               NaN        0
2018-01-02 00:00:00               NaN        1
2018-01-03 00:00:00               NaN        2
2018-01-04 00:00:00               NaN        3
2018-01-05 00:00:00               NaN        4
2018-01-06 00:00:00               NaN        5
2018-01-07 00:00:00               NaN        6

为什么会这样?如何更改格式相同的pandas DataFrame索引之一?

f1-index来自dates = pd.date_range(start = startdate, end = enddate, freq = 'D'),而f3-one是外部软件包“假期”的结果

我希望这些都是需要的信息。提前谢谢

马可

1 个答案:

答案 0 :(得分:0)

您可以更改to_datetime来格式化列,如下所示:

我假设该列名为DATE

cat_total['DATE'] = pd.to_datetime(cat_total['DATE'],format='%Y-%m-%d', errors='ignore')

to_datetime