在python中复制每个组的最后一行

时间:2019-11-13 11:55:22

标签: python pandas dataframe duplicates

我有两个表,第一个是贷款的期限结构,第二个是贷款的利息。 x年后,贷款转移到固定利率结构上(这在现实世界中是相反的,但这是我目前正在使用的结构)。我的合并表并不总是具有相同的行数,因此,在每个条目的末尾,我剩下空白的行数。

表1(左表):

period Cash flow 
1      400
2      400
3      400
4      400
...   ....

表2(右表):

period interest rate
1      0.05
2      0.10

我希望将右表的最后一行(按条目)扩展为左表的长度(按条目)

表2(新的右表):

period interest rate
1      0.05
2      0.1
3      0.1
4      0.1

我试图将以下代码改编为仅使用最后一行(参考末尾给出的问题),但是我收到一条错误消息。

原始代码是

df = df.loc[df.index.repeat(df['RoomNights'])]

修改尝试将loc更改为iloc并选择要被new_len次复制的最后一行

len(left_table)
len(right_table)
if len(right_table) < len(left_table) + 4:
    new_len = len(left_table) + 4

right_table = right_table.iloc[right_table[-1,:].index.repeat(new_len)]

错误消息是

TypeError: unhashable type: 'slice'

1 个答案:

答案 0 :(得分:0)

您可以这样做:

df1.merge(df2, how='left').fillna(method='ffill')

输出:

   period  Cash flow  interest rate
0       1        400           0.05
1       2        400           0.10
2       3        400           0.10
3       4        400           0.10