在尝试追加数据帧时,在for循环期间获取NaN值



我试图通过运行一个返回字典的函数isValid(s)来解析并添加数据到现有的数据框架:

combo.update({"is_valid": isValid, "total_tests": ttl, "positive": pos, "negative": neg})
return combo

然后创建一个空白数据框,用字典附加该数据框,然后将该数据框与先前存在的数据框连接起来。下面是我的代码:

def CleanCovidTest(df_test):
s = 0
df_add = pd.DataFrame()
for value in isValidString(df_test.testresults.iloc[s]):
result = isValidString(df_test.testresults.iloc[s]) 
df_add = df_add.append(result, ignore_index = True)                     
s += 1
df_test = pd.concat([df_test, df_add], axis = 1)
return df_test

这段代码成功地为数据框的前4行添加了值,但随后它只返回NaN值:

index clinic      date          testresults  ...  negative positive  total_tests
0     1001  5/6/2020               R4-3+1  ...       3.0      1.0          4.0
1     1002  5/6/2020             R14-2+12  ...       2.0     12.0         14.0
2     1003  5/6/2020  R5-3+2R7+7-0R11+4-7  ...      10.0     13.0         23.0
3     1004  5/6/2020        R10-8+2R7+7-0  ...       8.0      9.0         17.0
4     1005  5/6/2020   R5-3+2R9+7-2R1+0-1  ...       NaN      NaN          NaN
...
95    1096  5/6/2020         R4-3+1R6-3+3  ...       NaN      NaN          NaN
96    1097  5/6/2020         R9-3+6R7+7-0  ...       NaN      NaN          NaN

你知道是什么原因导致的吗?我还尝试使用pd.DataFrame(result, index = [s])创建另一个新数据框,并将df_add添加到这个新数据框中,但我得到了完全相同的结果。

你的循环有问题:

s = 0
df_add = pd.DataFrame()
for value in isValidString(df_test.testresults.iloc[s]):
result = isValidString(df_test.testresults.iloc[s]) 
df_add = df_add.append(result, ignore_index = True)                     
s += 1

变量value只循环isValidString(顺便说一下,函数名很糟糕)对s==0的结果,然后循环停止。

你的代码太混乱了,无法给出解决方案,但看看这个变化,也许你会得到启发:

for s in range(len(df_test)):
for value in isValidString(df_test.testresults.iloc[s]):
df_add.append(value, ignore_index=True)
<代码>

相关内容

  • 没有找到相关文章

最新更新