获取行索引并将其写入数据帧

时间:2019-08-30 04:24:54

标签: python pandas dataframe

我有两个具有以下结构的数据框。

DF1

.... |                    Time                    | Site | AA | BB | CC |    
  58  | 20-04-2019 08:00:00 - 21-04-2019 08:00:00 | AR25 |  1 | NS | 93 |  
  59  | 21-04-1019 08:00:00 - 22-04-2019 08:00:00 | DP88 | NS |    | 3  |  
  60  | 21-04-1019 08:00:00 - 22-04-2019 08:00:00 | DP88 |    |  1 | 15 |  

DF2

.... |     Time            | Error | Site |     
  10 | 20-04-2019 09:25:15 | 401   | AR25 |  
  11 | 20-04-2019 11:00:10 | 401   | AR25 |    
  15 | 21-04-2019 23:25:16 | 404   | DP88 |  

AA,BB,CC列存储有关每个站点的一些测量信息,可以包含数字值或为空。 AA,BB,CC中的记录可能取决于日期和站点。所以基本上我的步骤是:
    1.在DF1中获取在AA中有记录的行(然后是BB,然后是CC);
    2.使用时间间隔和站点名称作为在DF2中查找行的键
    3.将DF1中行的索引(索引)放入与DF3中相应的AA / BB / CC列相对应的时间,错误和站点记录。

有望实现最终的DF3

.... |  Time               | Error |Site |    AA   |   BB   |   CC  |    
  1  | 20-04-2019 09:25:15 |  401  |AR25 |  58     |        |    58 |  
  2  | 20-04-2019 11:00:10 |  401  |AR25 |  58     | 58     |       |  
  2  | 21-04-2019 23:25:16 |  404  |DP88 |  59,60  |  59,60 | 59,60 |  

为了易于使用,我将DF1中的“时间”列分为两列-“开始”和“结束”

df1['Start'] = df1['Time'].str.split(' - ').str[0]
df1['End'] = df1['Time'].str.split(' - ').str[1]
df1['Start'] = pd.to_datetime(df1['Start'])
df1['End'] = pd.to_datetime(df1['End'])

cols = ['AA','BB', 'CC']
for column in df1[cols]:
    df1 = df1[(df1[column]!= 'NS') & (df1[column] != '0')]
    for name in df1['Site'].unique():
        if df2['Site'].str.contains(name) & df2['Time'].between(df1['Start'].values[0],df2['End'].values[0]):
            values = df1.index.values.tolist()
            df3[column] = [values]

第1步和第2步没问题,但第3步什么也没做。问题是我无法获取如何使用所需结构来构建df3的索引,因为可能会重复以及每个AA,BB,CC列的多个索引。

是否有可能达到预期的结果?如果是,请提供一些我需要做的线索。

预先感谢

1 个答案:

答案 0 :(得分:1)

使用:

.display-none {
    display: none;
}

// Important: .display-none class has to go before .material-icons ones!!!
<i class="display-none material-icons">settings</i>