试图在dataframe中更新非常特定的值。首先查看索引中给定值的最后一行,然后选择该行的一列。但是,正如您所看到的,我无法更新它。我也尝试过使用df.at[],但我也无法使用,因为它没有给我提供我想要的实用程序。
我会很感激你的帮助。
代码如下:
df = pandas.DataFrame([['ABBOTSFORD', 427000, 448000],['ABBOTSFORD', 427000, 448000],
['ABERFELDIE', 534000, 600000],['ABBOTSFORD', 427000, 66666]],
columns=['Locality', 2005, 2006])
df.set_index('Locality', inplace=True)
print(df)
print('\n')
df.loc['ABBOTSFORD'].iloc[-1].loc[2006] = 3000
print(df.loc['ABBOTSFORD'].iloc[-1].loc[2006])
print('\n')
print(df)
Output:
Locality 2005 2006
ABBOTSFORD 427000 448000
ABBOTSFORD 427000 448000
ABERFELDIE 534000 600000
ABBOTSFORD 427000 66666
66666
Locality 2005 2006
ABBOTSFORD 427000 448000
ABBOTSFORD 427000 448000
ABERFELDIE 534000 600000
ABBOTSFORD 427000 66666在dataframe中更新特定值。
发布于 2022-09-09 14:58:34
你试图做的是棘手的,因为你有重复的指数。此外,您不能为分配而链接loc操作(您有更新副本的风险)。
据我所知,你想更新2006年的最后一个“阿博斯福德”。
您可以从numpy获得帮助来确定它的位置,以便能够使用iloc。对于列,使用get_loc
idx = np.arange(df.shape[0])[df.index=='ABBOTSFORD'][-1]
col = df.columns.get_loc(2006)
df.iloc[idx, col] = 3000产出:
2005 2006
Locality
ABBOTSFORD 427000 448000
ABBOTSFORD 427000 448000
ABERFELDIE 534000 600000
ABBOTSFORD 427000 3000https://stackoverflow.com/questions/73664012
复制相似问题