我有一个非常简单的问题。我想在熊猫数据帧的给定行的给定列中更改一个值。我尝试通过以下方式完成:
df['column3'].loc[this_date] = val
结果,我得到以下警告:
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
我对这个警告的解释是,通过使用列名称(‘column3’
)和loc
我实际上无法访问(引用)数据帧的所需单元格。相反,我创建了一个对象,它是“单元格”对象的副本,然后尝试更改与该“副本对象”关联的值。
我不明白的是,它似乎有效。尽管pandas给我写信说我试图修改副本,但我确实修改了原始数据帧。
我的问题是如何确保我真的在做我想做的事情,如何以“正确”的方式去做,让熊猫们不抱怨?
出现警告的原因是< code>df本身是某个其他dataframe对象的副本。我猜您有一些原始数据帧< code>df_origin,并且通过一些操作(如切片)从< code>df_origin获得< code>df。因此< code>df是< code>df_origin的副本。然后,您尝试将某个值设置为< code>df,出现警告,告诉您这不会更改原始数据帧< code>df_origin中的值。如果您不关心df_origin,一种解决方案是在切片前后使用单个变量指向dataframe对象。否则,您可以通过< code > PD . set _ option(' mode . chained _ assignment ',None)取消警告
您设置值的方式很好,还有以下几种:
df.ix[this_date, 'column3'] = val
df.loc[this_date, 'column3'] = val
df.at[this_date, 'column3'] = val
问题内容: 我想用NaN替换数据框列中的错误值。 但是,最后一行失败,并发出警告,因为它正在处理df副本。那么,处理此问题的正确方法是什么?我已经见过许多使用iloc或ix的解决方案,但是在这里,我需要使用布尔条件。 问题答案: 只需使用: 您正在尝试的操作称为链索引:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#index
问题内容: 我有一个熊猫数据框。我想“落后”我的专栏之一。例如,这意味着将整个列“ gdp”上移一位,然后删除其余行底部的所有多余数据,以使所有列的长度再次相等。 无论如何要这样做? 问题答案:
我有一个数据框,只有一列和1200行。每行中总共有3个可能的值-“无差异”、“异性”或“同性”。列标题是“Friends”,我试图使用 但结果是一个空的数据帧(df2)
我有一些蛋白质结构数据,我已将其转换为Pandas DataFrame。 有一列对应于氨基酸残基,标记为< code>resi。 我想选择<code>resi<code>值出现在其他列表中的所有行。现在,我可以使用以下方法选择存在的行: 如何选择行,以便包含疏水残基的行都被选中,而不在数据帧选择器中写入更多条件?据我所见,Pandas关于字符串方法的文档不允许我传递值列表。
问题内容: 我有一个Pandas数据框,其中一列包含文本。我想获得一列出现在整列中的唯一单词的列表(空格是唯一的拆分)。 输出应如下所示: 获得计数也没有什么坏处,但这不是必需的。 问题答案: 使用来创建唯一元素的序列。 进行一些清理以使小写字母的字符串分解: 该列中的每个列表都可以传递给函数以获取唯一值。使用这样做: 或与from注释一起使用:
问题内容: 我使用了多种方式来拆分和剥离熊猫数据框中的字符串,以删除所有的’\ n’字符,但是由于某些原因,它根本不想删除附加在其他单词上的字符,即使我拆分它们。我有一个带有列的pandas数据框,该列使用Beautifulsoup捕获网页中的文本。文本已经由beautifulsoup清除了一点,但是未能删除附加在其他字符上的换行符。我的字符串看起来像这样: “动手\ n开发游戏。我们将研究与游戏