Python pandas.concat仅使用一个表中的索引

Python pandas.concat仅使用一个表中的索引,python,pandas,dataframe,Python,Pandas,Dataframe,我正在寻找一种更有效的方法来连接两个具有DatetimeIndex的数据帧。考虑到我只需要第一个的日期,第二个的所有数据: from io import StringIO import pandas as pd a = StringIO(''' Time,No,Value 2017-10-17 04:00:00,1,10 2017-10-17 04:01:00,2,10 2017-10-17 04:02:00,3,10 2017-10-17 04:03:00,4,10 2017-10-17 0

我正在寻找一种更有效的方法来连接两个具有
DatetimeIndex
的数据帧。考虑到我只需要第一个的日期,第二个的所有数据:

from io import StringIO
import pandas as pd

a = StringIO('''
Time,No,Value
2017-10-17 04:00:00,1,10
2017-10-17 04:01:00,2,10
2017-10-17 04:02:00,3,10
2017-10-17 04:03:00,4,10
2017-10-17 04:04:00,5,10
''')

b = StringIO('''
Time,Str
2017-10-17 04:00:00,a
2017-10-17 04:02:00,b
''')

df1 = pd.read_csv(a).set_index('Time')
df2 = pd.read_csv(b).set_index('Time')
我现在做的是包括一个无用的列,然后删除它:

>>> df = pd.concat([df1.No, df2], axis=1)
>>> print(df)
                    No  Str
Time                        
2017-10-17 04:00:00   1    a
2017-10-17 04:01:00   2  NaN
2017-10-17 04:02:00   3    b
2017-10-17 04:03:00   4  NaN
2017-10-17 04:04:00   5  NaN

>>> del df['No']
>>> print(df)
                    Str
Time                    
2017-10-17 04:00:00    a
2017-10-17 04:01:00  NaN
2017-10-17 04:02:00    b
2017-10-17 04:03:00  NaN
2017-10-17 04:04:00  NaN
预期命令(此命令无效)

>>> pd.concat([df1.index, df2], axis=1)
                    Str
Time                    
2017-10-17 04:00:00    a
2017-10-17 04:01:00  NaN
2017-10-17 04:02:00    b
2017-10-17 04:03:00  NaN
2017-10-17 04:04:00  NaN

这是您想要的更简单的形式:

df2.reindex(df1.index)

按照第一个答案中的建议重新编制索引,或者:

pd.concat([df1.No, df2], axis=1)['Str']
您可以使用,默认情况下,它将
索引上的两个数据帧连接在一起:

In [180]: df2.join(df1, how='outer')['Str']
Out[180]: 
Time
2017-10-17 04:00:00      a
2017-10-17 04:01:00    NaN
2017-10-17 04:02:00      b
2017-10-17 04:03:00    NaN
2017-10-17 04:04:00    NaN
Name: Str, dtype: object