簡體   English   中英

熊貓to_datetime()然后在DateTime索引上concat()

[英]pandas to_datetime() then concat() on DateTime Index

我正在嘗試使用concat在其DateTime索引上合並2個DataFrame,但是它沒有按預期工作。 我從該示例文檔的示例中復制了一些代碼:

import pandas as pd

df = pd.DataFrame({'year': [2015, 2016],
                   'month': [2, 3],
                   'day': [4, 5],
                   'value': [444,555]})

df.set_index(pd.to_datetime(df.loc[:,['year','month','day']]),inplace=True)

df.drop(['year','month','day'],axis=1,inplace=True)

df2 = pd.DataFrame(data=[222,333],
                   index=pd.to_datetime(['2015-02-04','2016-03-05']))

pd.concat([df,df2])
Out[1]: 
            value      0
2015-02-04  444.0    NaN
2016-03-05  555.0    NaN
2015-02-04    NaN  222.0
2016-03-05    NaN  333.0

它為什么不識別索引上的相同日期並進行相應合並? 我驗證了兩個索引都是DateTime:

df.index
Out[2]: DatetimeIndex(['2015-02-04', '2016-03-05'], dtype='datetime64[ns]', freq=None)

df2.index
Out[3]: DatetimeIndex(['2015-02-04', '2016-03-05'], dtype='datetime64[ns]', freq=None)

謝謝。

通過axis=1來按列連接:

In [7]:
pd.concat([df,df2], axis=1)

Out[7]:
            value    0
2015-02-04    444  222
2016-03-05    555  333

或者,您可以join ed:

In [5]:
df.join(df2)

Out[5]:
            value    0
2015-02-04    444  222
2016-03-05    555  333

merge d:

In [8]:
df.merge(df2, left_index=True, right_index=True)

Out[8]:
            value    0
2015-02-04    444  222
2016-03-05    555  333

您需要axis = 1:

pd.concat([df,df2], axis=1)

輸出:

            value    0
2015-02-04    444  222
2016-03-05    555  333

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM