gpt4 book ai didi

python - 在数据框中设置列的第一行和最后一行

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:47 27 4
gpt4 key购买 nike

我一直在阅读这篇文章,但仍然觉得这个主题有点令人困惑: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

假设我有一个 Pandas DataFrame,我希望同时将单个列的第一行和最后一行元素设置为任意值。我可以这样做:

df.iloc[[0, -1]].mycol = [1, 2]

这告诉我一个值正试图在 DataFrame 的切片副本上设置。 这有潜在的危险。

我可以使用 .loc 来代替,但是我需要知道第一行和最后一行的索引(相反,.iloc 允许我按位置访问).

执行此操作最安全的 Pandasy 方法是什么?

为了达到这一点:

# Django queryset
query = market.stats_set.annotate(distance=F("end_date") - query_date)

# Generate a dataframe from this queryset, and order by distance
df = pd.DataFrame.from_records(query.values("distance", *fields), coerce_float=True)
df = df.sort_values("distance").reset_index(drop=True)

然后,我尝试调用 df.distance.iloc[[0, -1]] = [1, 2]。这会引发警告。

最佳答案

问题不在于 iloc,而是在您访问 .mycol 时创建了一个副本。您可以在 iloc 中完成这一切:

df.iloc[[0, -1], df.columns.get_loc('mycol')] = [1, 2]

通常 ix 用于混合整数和基于标签的访问,但在这种情况下不起作用,因为 -1 实际上不在索引中,显然 ix 不够聪明,不知道它应该是最后一个索引。

关于python - 在数据框中设置列的第一行和最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36459105/

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