gpt4 book ai didi

python - 从值列表中分配新列的值警告大型数据集 - Pandas

转载 作者:行者123 更新时间:2023-12-01 01:46:56 25 4
gpt4 key购买 nike

我有一个像这样的数据框列表:

sm = pd.DataFrame([["Forever", 'BenHarper'],["Steel My Kisses", 'Kack Johnson'],\
["Diamond On the Inside",'Xavier Rudd'],[ "Count On Me", "Bruno Mars"]],\
columns=["Song", "Artist"])

pm = pd.DataFrame([["I am yours", 'Jack Johnson'],["Chasing Cars", 'Snow Patrol'],\
["Kingdom Comes",'Cold Play'],[ "Time of your life", "GreenDay"]],\
columns=["Song", "Artist"])

df_list = [sm,pm]

现在,我有另一个值列表,我想将其作为新列分配给数据框列表中的数据框。

years = ["1999", "2003"]

我使用了以下代码(它适用于较小的数据集)

df_with_year = []
for df in df_list:
for j in years:
df["Year"] = j
df_with_year.append(df)

但是,当我对更大的数据集使用相同的逻辑时,我收到错误:

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

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

有什么想法为什么我会收到此复制错误吗?我浏览了提供的链接,它讨论了一个已经存在的列,在这种情况下我可以使用 .loc。就我而言,我正在创建一个新列并分配值。

最佳答案

如果您的 Datafame df 本身就是其他 parent_df 的子 DataFrame,则此SettingWithCopyWarning 通常由诸如 df["Year"] = j 甚至 df.loc[:, "Year"] = j 之类的行触发。只要您不尝试使用 df["Year"] = j 作为修改 parent_df 的方式,您始终可以安全地忽略SettingWithCopyWarning

如果您不想看到警告,可以通过设置全局使其静音

pd.options.mode.chained_assignment = None

关于python - 从值列表中分配新列的值警告大型数据集 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51216954/

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