在 python 的 pandas 中使用 .loc 的正确方法
Proper way to utilize .loc in python's pandas
当尝试使用 pandas 数据帧将一列数字从 object
更改为 float
dtypes 时,我收到以下警告:
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[col] = df2[col].astype('float')
请注意,df2 是 df1 的子集,使用的条件类似于:
df2 = df1[df1[some col] == value]
使用copy
方法。而不是:
df2 = df1[df1[some col] == value]
随便写:
df2 = df1[df1[some col] == value].copy()
最初,df2
是 df1
的一部分,而不是新的数据帧。这就是为什么当您尝试修改它时,python 会引发错误。
当尝试使用 pandas 数据帧将一列数字从 object
更改为 float
dtypes 时,我收到以下警告:
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[col] = df2[col].astype('float')
请注意,df2 是 df1 的子集,使用的条件类似于:
df2 = df1[df1[some col] == value]
使用copy
方法。而不是:
df2 = df1[df1[some col] == value]
随便写:
df2 = df1[df1[some col] == value].copy()
最初,df2
是 df1
的一部分,而不是新的数据帧。这就是为什么当您尝试修改它时,python 会引发错误。