通过日期索引对齐多个熊猫系列

时间:2019-02-06 18:32:43

标签: pandas dataframe time-series

我有n个pandas series。它们大多数具有相同数量的数据,但并不总是如此。

print(str(len(dfS1)))
print(str(len(dfS2)))
print(str(len(dfS3)))
print(str(len(dfS4)))

3025
3026
3025
3026

我需要确保每一天的行都正确对齐,例如:

dfj = dfS1.join(dfS2, how='outer', rsuffix='_1').join(dfS3, how='outer', rsuffix='_2').join(dfS4, how='outer', rsuffix='_3')

但是,如果我打印出结果dataframe dfj

print(dfj)

          date   close     date_1  close_1     date_2  close_2     date_3  \
0    2007-01-24  143.99 2007-01-24    44.29 2007-01-25   124.80 2007-01-25 

      close_3  
0       77.80   
....

如您所见,连接的行未对齐。第1行包含不同日期的值。

我如何确保每一行都包含日期都匹配的值?因此,例如,第1行将从每个dataframe中所有日期都相同的地方开始。其他所有dataframes中没有匹配日期的每一行都是dropped

我意识到我可以手动循环并创建dataframe,但是我假设pandas已经具有执行此操作的内置方法。

1 个答案:

答案 0 :(得分:1)

您尚未说明要加入的内容。

Sub test()
  Set objAccess = CreateObject("Access.Application")
  objAccess.ConvertAccessProject _
    SourceFilename:="C:\Users\LuA\Desktop\Deals_test\ACA03-2.MDB", _
    DestinationFilename:="C:\Users\LuA\Desktop\Deals_test\ACA03-2_2000.MDB", _
    DestinationFileFormat:=acFileFormatAccess2000
End Sub

有关dataframe.join

的完整详细信息,请参见熊猫文档。

此外,如果您要删除所有日期都没有匹配日期的行:

对于要加入的每个数据框/系列,您都想使用 how ='inner'    而不是“外部”。