我目前正在处理一个脚本,以检查一堆CSV是否具有足够的格式以供其他CSV处理。我对它必须通过的某些断言感到困惑。一种是不遗漏,为此我尝试过:
df = pd.read_csv("C:PATH\\test.csv", sep= ',')
def check(self, file):
try:
assert df.notna().values.any()
except AssertionError:
assert False, " NaN in data"
它什么都不做。我在带有NaN的CSV上尝试过,但没有引发错误。然后,我也希望它用逗号分隔,但它们可能会给我传递一个点和逗号分隔的点。这是我的尝试:
try:
assert len(df.columns) != 1
except AssertionError:
"Not comma separated"
它的响应不佳,有时会升旗,有时却没有。
是否有我不理解的“断言”中的内容?还是其他问题?
答案 0 :(得分:2)
将df作为参数传递给check()
。
并将.any()
更改为.all()
df= pd.read_csv("C:\\PATH\\test.csv", sep= ',')
def check(file):
try:
assert file.notna().values.all()
except AssertionError:
assert False, " NaN in data"
check(df)
答案 1 :(得分:0)
pd.notna()
https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.notna.html
要求您提供数据框作为参数
请尝试如下使用notnull():
df= pd.read_csv("C:PATH\\test.csv", sep= ',')
def check(file):
try:
assert file.notnull().values.any()
except AssertionError:
assert False, " NaN in data"
check(df)