【发布时间】:2021-03-14 08:33:21
【问题描述】:
让我们假设以下pandas 数据框:
df =
Column1 Column2 Column3 Column4
2007-01-02 1M String1 String2
2007-01-02 1M 0.051695 0.0057984
2007-01-02 1M 0.0498056 0.00725827
2007-01-02 1M 0.0493161 0.00780772
2007-01-02 1M 0.0492764 0.00810296
2007-01-02 1M 0.0493988 0.00820139
2007-01-02 1M 0.0495177 0.00829837
2007-01-03 1M String1 String2
2007-01-03 1M 0.0516506 0.00589057
2007-01-03 1M 0.0496136 0.00726748
2007-01-03 1M 0.0490747 0.00781708
2007-01-03 1M 0.0490845 0.0081065
2007-01-03 1M 0.0492069 0.00820219
2007-01-04 1M String1 String2
2007-01-04 1M 0.0510632 0.00589493
... ... ... ...
Column3 和 Column4 列被视为对象。当我检查Column3(即0.051695)的第二个元素的type 时,我得到float。我的问题是我是否可以将Column3 和Column4 的数字元素从float 更改为float64。我尝试了以下方法,但没有成功:
df[["Column3"]][df["Column3"]!="String1"] =
df[["Column3"]][df["Column3"]!="String1"].astype(np.float64)
这给了我错误
SettingWithCopyWarning: 试图在 DataFrame 中的切片副本上设置一个值。 尝试改用 .loc[row_indexer,col_indexer] = value
df.loc[:,"Column3"][df["Column3"]!="String1"] =
df.loc[:,"Column3"][df["Column3"]!="String1"].astype(np.float64)
这给了我错误
SettingWithCopyWarning: 正在尝试在 DataFrame 中的切片副本上设置值
【问题讨论】: