使用group by将更改应用于整个数据帧



我正试图将更改应用于仅通过使用groupby(据我所知(返回的值的数据帧。因此,我想要的是找到每个公司的最小日期值,这样我就可以将数字0应用于几列中的第一个值(在本例中为df2["研发费用滞后"]和df2[资本支出滞后"](。到目前为止,我有一个groupby,它返回每个公司的最小日期值:

df2.groupby('Ticker Symbol').apply(lambda d: 
d[d['Data Date'] == d['Data Date'].min()])

你走在了正确的轨道上。您可以获得这些行的索引值,然后将它们与.loc[]一起使用来更改这两列中的值:

df2.loc[df2.groupby('Ticker Symbol').apply(
lambda d: d[d['Data Date'] == d['Data Date'].min()]
)
.index
.get_level_values(1),
['Research and Development Expense Lag', 'Capital Expenditures Lag']
] = 0

.get_level_values(1)函数用于提取MultiIndex的第二级别。第一个级别将包含Ticker Symbol值。

最新更新