我试着delete
某些列并转换列中的某些值
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
那里有什么问题?
Your df2
是另一个数据帧的切片。您需要显式复制它df2 = df2.copy()
就在您尝试之前drop
考虑以下数据框:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.arange(20).reshape(4, 5), list('abcd'), list('ABCDE'))
df1
让我分配一个切片df1
to df2
df2 = df1[['A', 'C']]
df2
现在是一个切片df1
并且应该触发那些讨厌的事情SettingWithCopyWarning
如果我们尝试改变一些事情df2
。让我们来看看。
df2.drop('c')
没问题。怎么样:
df2.drop('c', inplace=True)
就在那里:
问题是 pandas 试图提高效率并跟踪df2
指向相同的数据df1
。它正在维护这种关系。该警告告诉您,您不应该尝试通过切片来弄乱原始数据帧。
请注意,当我们查看df2
,行“c”已被删除。
df2
并看着df1
我们看到“c”行仍然存在。
df1
pandas 复制了df2
然后删除行“c”。这可能与我们的意图可能不一致df2
一个切片并指向与以下相同的数据df1
。所以熊猫警告我们。
为了看不到警告,请自行复制。
df2 = df2.copy()
# or
df2 = df1[['A', 'C']].copy()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)