python - 在尝试附加数据帧时在 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
(顺便说一句,可怕的函数名称) for的结果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)
推荐阅读
- .net-core - Serilog Splunk 未记录消息
- kubernetes - 在 Kubernetes 部署中,我应该何时使用部署策略重新创建
- geometry - 计算细分网格的最大边长
- android - unityLibrary:compileDebugJavaWithJavac
- node.js - 在使用 TypeORM 保存实体之前验证 @versionColumn 值
- excel - VBA条件检查来自不同工作表的两个不同列中的字符串
- reactjs - 当 svg 路径矩阵完全加载时响应回调或事件
- twitter-bootstrap - wenzhixin bootstrap-table detailView 默认展开
- ios - Flutter Web Space按钮在IOS上的键盘上不起作用
- spring-boot - 如何将自定义注释中的参数传递给库中的 WebSecurityConfigurer