我想在索引不匹配的数据帧片之间对一列的值进行左赋值。
df = pd.DataFrame(data=[('A', '20210101', 5.0),
('B', '20210101', 3.0),
('C', '20210101', 2.0),
('A', '20210102', 0.0),
('C', '20210102', 0.0),
('A', '20210103', 0.0),
('C', '20210103', 0.0),
('D', '20210103', 0.0)],
columns=('Name', 'Date', 'Dollars')).set_index(['Name', 'Date'])
dft = df.groupby(df.index.get_level_values('Date'))
dates = list(dft.groups.keys())
df0 = dft.get_group(dates[0]).reset_index(level=1)
df1 = dft.get_group(dates[1]).reset_index(level=1)
df2 = dft.get_group(dates[2]).reset_index(level=1)
无论左切片的索引是右切片索引的子集还是超集,都有一个表达式可以工作吗?当left是子集时,以下尝试失败:
df0.loc[df1.index, 'Dollars'] = df1.Dollars # Works because every key in df1 is in df0
df0.loc[df2.index, 'Dollars'] = df2.Dollars # KeyError: "['D'] not in index"