gpt4 book ai didi

pandas: df.loc[-1,col] 有时工作,有时用 NAN 添加额外的行

转载 作者:行者123 更新时间:2023-12-02 02:23:27 27 4
gpt4 key购买 nike

我有一个 Pandas 数据框。我正在尝试修改最后一行中的 name 列值

我试试

df.loc[-1,'name'] = "something"

这行得通

现在我使用查询从 df 中过滤几行并将其命名为 df_query

我在 df_query 中的最后一行是

    id  name
21 965 kris

我检查索引 -1

df_query.loc['name'].iloc[-1]

它显示“kris”

现在开始 df_query 我试试

df_query.loc[-1,'name'] = "something"

它添加了一个额外的行,而不是将 kris 替换为 something

    id  name
21 965.0 kris
-1 NaN "something"

还将 id 从 int 转换为 float

为什么有时能用有时不能用

搜索后我在 https://stackoverflow.com/a/49510469 找到了

Just using iloc[-1, 'a] won't work as -1 is not in the index.

我无法理解上面给出的原因

并说要尝试:

df_query.loc[df_query.loc.index[-1],'name'] = "something"

现在可以了。

谁能解释一下发生了什么

最佳答案

您可以通过不同的方式选择name 的最后一个值 - 如果使用 DataFrame.loc如果索引值是唯一的,则使用 df.index 作为索引的最后一个值:

df.loc[df.index[-1],'name'] = "something"

或者如果使用 DataFrame.iloc通过 Index.get_loc 获取 name 列的位置:

df.iloc[-1,df.columns.get_loc('name')] = "something"

如果使用:

df.loc[-1,'name'] = "something"

Pandas 尝试使用 index=-1 设置行(如果存在),否则创建索引为 -1 的新行。问题是如果最后一个索引没有 -1,但是例如第一个索引,它不是最后一行,而是第一行。

也是可能的用途:

#tested last value of index
if df.index[-1] == -1:
#last value is set
df.loc[-1,'name'] = "something"

#tested all values if index
elif (df.index == -1).any():
#some value with -1 is set
df.loc[-1,'name'] = "something"
else:
#new row with -1 is created
df.loc[-1,'name'] = "something"

关于pandas: df.loc[-1,col] 有时工作,有时用 NAN 添加额外的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66096734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com