gpt4 book ai didi

python - 创建新列和删除 NaN 行时设置复制

转载 作者:行者123 更新时间:2023-11-28 21:42:45 25 4
gpt4 key购买 nike

<分区>

我一直在四处寻找阅读 pandas 文档 here并从围绕 here 发布的问题尝试不同的代码行和 here而且我似乎无法摆脱带有复制警告的设置。我更愿意学习以“正确”的方式编写代码,而不仅仅是 ignoring the warnings.

以下代码行在 for 循环内,我不想多次生成此警告,因为它可能会减慢速度。

我正在尝试创建一个名称为“E”+vs 的新列,其中 vs 是 for 循环列表中的一个字符串

但对于其中的每一个,我仍然收到以下警告,即使是最后 3 行:

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

以下是我到目前为止尝试过的麻烦线路:

#based on research, the first two seem to be the "wrong" way

df_out['E'+vs] = df_out[kvs].rolling(v).mean().copy()
df_out['E'+vs] = df_out[kvs].rolling(v).mean()

df_out.loc[:,'E'+vs] = df_out[kvs].rolling(v).mean().copy()
df_out.loc[:,'E'+vs] = df_out[kvs].rolling(v).mean()
df_out.loc[:,'E'+vs] = df_out.loc[:,kvs].rolling(v).mean()

另一个给出 SettingWithCopyWarning 的是这样的:

df_out.dropna(inplace=True,axis=0)

这个也给出了警告(但我认为这个会)

df_out = df_out.dropna(inplace=True,axis=0)

如何正确执行这两个操作?

编辑:这是生成原始 df_out 的代码

df_out= pd.concat([vol.Date[1:-1], ret.Return_Time[:-2], vol.Freq_Time[:-2],
vol.Freq_Time[:-1].shift(-1), vol.Freq_Time[:].shift(-2)],
axis=1).dropna().set_index('Date')

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