具有类似数据框
import pandas as pd
df = pd.DataFrame(
["2017-01-01 04:45:00", "2017-01-01 04:45:00removeMe"], columns=["col"]
)
为什么我在这里得到SettingWithCopyWarning
def test_fun(df):
df = df[~df["col"].str.endswith("removeMe")]
df.loc[:, "col"] = pd.to_datetime(df["col"])
return df
df = test_fun(df)
但是如果我不运行该功能就不会运行吗?
df = df[~df["col"].str.endswith("removeMe")]
df.loc[:, "col"] = pd.to_datetime(df["col"])
我的函数应该是什么样子?
答案 0 :(得分:1)
在函数中,您拥有df
,当您使用布尔数组对其进行索引时,它会提供外部范围df
的视图-然后,您尝试对该视图进行附加索引,这就是为什么出现警告的原因。没有功能,df
只是一个数据框,它使用索引来调整大小(而不是视图)。
我会这样写:
df["col"] = pd.to_datetime(df["col"], errors='coerce')
return df[~pd.isna(df["col"])]