遍历一个数据框的行以填充另一个数据框

时间:2020-03-28 11:19:53

标签: python-3.x dataframe

更新:我已经简化了问题:

我有以下数据框:

data = {'Portfolio':  ['Book1', 'Book2', 'Book1', 'Book2'],
        'Instrument': ['Water', 'Fire',  'Water', 'Water'],
        'Value':      [10,      5,       6,       11],
        'Start': [datetime(2021, 1, 1), datetime(2021, 1, 1), datetime(2021, 1, 1), datetime(2021, 1, 1)],
        'End': [datetime(2021, 12, 31), datetime(2021, 3, 31), datetime(2021, 12, 31), datetime(2021, 21, 31)]
        }
df_input = pd.DataFrame(data, columns=['Portfolio', 'Instrument', 'Value', 'Start', 'End'])

enter image description here

我想创建一个新的数据框,如下所示:

enter image description here

我设法创建了一个空白的最终数据框:

index = pd.date_range(start=df_input['Start'].min(), end=df_input['End'].max().replace(hour=23), freq='H')
col_list = [(x, y, '-') for x, y in df_input.groupby(['Portfolio', 'Instrument']).size().to_dict().keys()]
df_final = pd.DataFrame(0, index=index, columns=pd.MultiIndex.from_tuples(col_list))

然后,我可以使用以下代码将第一个数据框的每个行大小写手动分配给第二个:

df_final.loc[(df_final.index >= datetime(2021, 1, 1)) &
             (df_final.index <= datetime(2021, 3, 31).replace(hour=23),('Book2', 'Fire', '-')] += 5

但是,我不知道将其添加到循环中并将其用于df_input中的所有行的最快方法。我尝试通过数据框搜索迭代,但是整个互联网都反对它是非常慢的方法。

有没有最快的方法?

0 个答案:

没有答案