当前位置: 首页 > 面试题库 >

pandas的行动设置了复制警告

居和顺
2023-03-14
问题内容

我试图“删除”某列并用

df2.drop(df2.columns[[0, 1, 3]], axis=1, inplace=True)
df2['date'] = df2['date'].map(lambda x: str(x)[1:])
df2['date'] = df2['date'].str.replace(':', ' ', 1)
df2['date'] = pd.to_datetime(df2['date'])

我得到的这条线

  df2.drop(df2.columns[[0, 1, 3]], axis=1, inplace=True)
C:/Users/����� �����������/Desktop/projects/youtube_log/filter.py:11: 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

有什么问题吗?


问题答案:

你的“df2”是另一个数据帧的一部分。你需要显式地复制它

在尝试“drop”之前使用`df2=df2.copy()``

考虑以下数据帧:

import pandas as pd
import numpy as np


df1 = pd.DataFrame(np.arange(20).reshape(4, 5), list('abcd'), list('ABCDE'))

df1

让我把“df1”的一部分分配给df2

df2 = df1[['A', 'C']]

`df2现在是df1的一部分,应该会触发那些讨厌的东西

`如果我们试图更改“df2”中的内容,请使用copywarning设置。我们来一杯

df2.drop('c')

No problems. How about:

df2.drop('c', inplace=True)

There it is:

问题是熊猫试图提高效率,并跟踪“df2”是什么

指向与“df1”相同的数据。它正在保持这种关系。这个

警告是告诉你,你不应该试图弄乱原来的

通过切片的数据帧。

请注意,当我们查看“df2”时,已经删除了“c”行。

df2

再看一下“df1”,我们看到“c”行还在。

df1

pandas复制了一个“df2”,然后删除了“c”行。这是潜在的

与我们的意图不符,我们可能认为我们做了’df2’a’

切片并指向与“df1”相同的数据。所以熊猫在警告我们。

要看不到警告,请自己复制。

df2 = df2.copy()
# or
df2 = df1[['A', 'C']].copy()


 类似资料:
  • 我想用替换大于任意数字(本例中为100)的

  • 问题内容: 我浏览了与该问题相关的一堆问题和答案,但是我仍然发现我在意想不到的地方得到了切片警告的副本。另外,它的代码在以前对我来说运行良好,这使我想知道某种更新是否可能是罪魁祸首。 例如,这是一组代码,其中我要做的就是将Excel文件读入pandas中,并减少语法中包含的列集。 现在,我对该文件所做的任何进一步更改都会引发切片警告的副本。 /Users/samlilienfeld/anacond

  • 问题内容: 如果数据如下所示: 我想复制IsHoliday等于TRUE的行,我可以这样做: 但是是否有更好的方法来执行此操作,因为我需要将假日行重复5次,如果使用上述方法,则必须追加5次。 问题答案: 您可以放入列表中,然后执行以下操作:

  • 当我看一个类似问题的答案时,如这个链接所示:pandas:以其他列的长度作为值添加列 我遇到了一个问题,它的解决方案是 抛出以下警告 我的问题是:如何做到这一点,以防止出现这种警告?在这个命令中,我希望在原始数据帧中添加一个新列,而不是创建一个片的某种副本。

  • 当我运行以下代码段时,我得到了臭名昭著的pandas设置WithCopyWarning: 我曾尝试通过添加一个。复制()如下: 不幸的是,我没有得到任何改变的警告。大量的谷歌搜索和StackOverflow并没有让我更进一步地理解语法中的根本错误,或者我是如何无意中链接的。代码似乎运行正常,但我讨厌忽略错误消息,希望它们被证明是无关的。 我非常感谢您对我的代码进行修复,并简单解释为什么会出现这种情

  • 我有两个vm服务器(比如S1和S2),需要在集群模式下安装kafka,其中只有一个分区和两个副本(一个是领导者本身,另一个是追随者),以确保可靠性。 从这个集群设置中获得了高层次的想法,希望确认以下策略是否正确。 首先将zookeeper设置为两个节点上的群集,以实现高可用性(HA)。如果我只在单个节点上设置zk,然后该节点关闭,则整个集群将关闭。正当在最新的Kafka版本中也必须使用zk吗?看来