pandas的行动设置了复制警告
我试图“删除”某列并用
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()