Python 合并作为时间序列一部分的多个数据文件(具有多列)

Python 合并作为时间序列一部分的多个数据文件(具有多列),python,pandas,dataframe,Python,Pandas,Dataframe,我有一个多时间序列数据(txt文件),形成一个时间序列。 下面是一个过于简单的例子: import pandas as pd import datetime as dt df1_1 = pd.DataFrame({'Date': [15/03/2019 10:00:11.000, 15/03/2019 10:00:12.000 , 15/03/2019 10:00:13.000], 'Cond [mS/cm]': [7.45, 7.45, 7.45], 'T

我有一个多时间序列数据(txt文件),形成一个时间序列。 下面是一个过于简单的例子:

    import pandas as pd
    import datetime as dt

    df1_1 = pd.DataFrame({'Date': [15/03/2019 10:00:11.000, 15/03/2019 10:00:12.000 , 15/03/2019 10:00:13.000],
   'Cond [mS/cm]': [7.45, 7.45, 7.45],
   'Temp [C]': [8.22, 8.22, 8.22],
    'Sal [PSU]': [7.63, 7.63, 7.63]})

    df1_2 = pd.DataFrame({'Date': [30/03/2019 10:00:11.000, 30/03/2019 10:00:12.000 , 30/03/2019 10:00:13.000],
   'Cond [mS/cm]': [7.45, 7.45, 7.45],
   'Temp [C]': [8.22, 8.22, 8.22],
    'Sal [PSU]': [7.63, 7.63, 7.63]})

    df2_1 = pd.DataFrame({'Date': [15/03/2019 10:00:11.000, 15/03/2019 10:00:12.000 , 15/03/2019 10:00:13.000],
   'Cond_2 [mS/cm]': [7.47, 7.47, 7.47],
   'Temp_2 [C]': [8.22, 8.22, 8.22],
    'Sal_2 [PSU]': [7.67, 7.67, 7.67]})  

     df2_2 = pd.DataFrame({'Date': [30/03/2019 10:00:11.000, 30/03/2019 10:00:12.000 , 30/03/2019 10:00:13.000],
   'Cond_2 [mS/cm]': [7.47, 7.47, 7.47],
   'Temp_2 [C]': [8.22, 8.22, 8.22],
    'Sal_2 [PSU]': [7.67, 7.67, 7.67]}) 
其中,df1表示来自传感器1的数据,df1_1和df_2是时间序列的下一个片段

我想将所有内容组合成一个大的
数据帧

到目前为止,我已经:

  • 包含完整时间序列(传感器数据)的通用文件 可能会有意想不到的差距)
  • 将文件读取为数据帧
  • 定义的标题
  • 将“日期”列设置为每个数据帧的
    索引
然后我想通过以下方式将数据帧加入到完整的时间序列中:

full_date = dates.join([df1_1, df1_2], how = "outer")  
但我犯了一个错误:

ValueError:索引具有重叠值:索引(['Cond[mS/cm]', “按[DBar]、“温度[C]、“Sal[PSU]”, “Dens.anom[kg/m3],“SOS[m/s]”, dtype='object')

为了检查问题是否真的存在于标题中,我将文件与稍微不同的标题合并(不同的标题=不同的传感器)。然后我得到了:

    complete_df = ({' ':[01/04/2019 00:00:01, 01/04/2019 00:00:01 , 01/04/2019 00:00:01,
    'Cond [mS/cm]': [NaN, NaN, NaN],
    'Temp [C]': [NaN, NaN, NaN],
    'Sal [PSU]': [NaN, NaN, NaN],
    'Cond_2 [mS/cm]': [NaN, NaN, NaN],
    'Temp_2 [C]': [NaN, NaN, NaN],
    'Sal_2 [PSU]': [NaN, NaN, NaN]}) 
这很合理,只是数据顺序不正确


我的问题是:我应该如何组合所有数据帧以获得一个大数据帧

将日期作为字符串传递,然后将其转换为日期时间。在使用pd.concat之后,仍然存在一个问题,即您可能不必要地复制列(Cond[mS/cm],Cond_2[mS/cm])。或者,您可以将所有列命名为相同的列,并使用传感器标识符传递一个附加列(即“传感器”:1)

import pandas as pd

df1_1 = pd.DataFrame({'Date': ['15/03/2019 10:00:11.000', '15/03/2019 10:00:12.000' , '15/03/2019 10:00:13.000'],
'Cond [mS/cm]': [7.45, 7.45, 7.45],
   'Temp [C]': [8.22, 8.22, 8.22],
    'Sal [PSU]': [7.63, 7.63, 7.63]})

df1_2 = pd.DataFrame({'Date': ['30/03/2019 10:00:11.000', '30/03/2019 10:00:12.000' , "30/03/2019 10:00:13.000"],
   'Cond [mS/cm]': [7.45, 7.45, 7.45],
   'Temp [C]': [8.22, 8.22, 8.22],
    'Sal [PSU]': [7.63, 7.63, 7.63]})

df2_1 = pd.DataFrame({'Date': ['15/03/2019 10:00:11.000', '15/03/2019 10:00:12.000' , '15/03/2019 10:00:13.000'],
   'Cond_2 [mS/cm]': [7.47, 7.47, 7.47],
   'Temp_2 [C]': [8.22, 8.22, 8.22],
    'Sal_2 [PSU]': [7.67, 7.67, 7.67]})  

df2_2 = pd.DataFrame({'Date': ['30/03/2019 10:00:11.000', '30/03/2019 10:00:12.000' , '30/03/2019 10:00:13.000'],
   'Cond_2 [mS/cm]': [7.47, 7.47, 7.47],
   'Temp_2 [C]': [8.22, 8.22, 8.22],
    'Sal_2 [PSU]': [7.67, 7.67, 7.67]}) 

complete_df  = pd.concat([df1_1,df1_2,df2_1,df2_2],ignore_index=True)
complete_df['Date'] = pd.to_datetime(complete_df['Date'])
complete_df.set_index('Date', inplace=True)
complete_df.fillna(0)