python - Python & Pandas:如何在循环中处理 NaN 值?
问题描述
使用 Python 和 Pandas,我正在寻求从 CSV 单元格中获取值并通过循环将它们写为 txt 文件。CSV文件的结构是:
user_id, text, text_number
0, test text A, text_0
1,
2,
3,
4,
5, test text B, text_1
下面的脚本成功地为第一行写入了一个 txt 文件 - 它被命名为 text_0.txt 并包含test text A
.
import pandas as pd
df= pd.read_csv("test.csv", sep=",")
for index in range(len(df)):
with open(df["text_number"][index] + '.txt', 'w') as output:
output.write(df["text"][index])
但是,当它进入下一行时,我收到一个错误:
TypeError: write() argument must be str, not float
我猜当它遇到读取为NaN
. 我尝试按照pandas 文档dropna
添加该功能,如下所示:
import pandas as pd
df= pd.read_csv("test.csv", sep=",")
df2 = df.dropna(axis=0, how='any')
for index in range(len(df)):
with open(df2["text_number"][index] + '.txt', 'w') as output:
output.write(df2["text"][index])
但是,同样的问题仍然存在 - 为第一行创建了一个 txt 文件,但为下一行返回了一条新的错误消息:KeyError: 1
.
有什么建议么?非常感谢所有帮助。
解决方案
这里的问题是您正在创建一个不一定在数据框索引中的范围索引。对于您的用例,您可以遍历数据框的行并写入文件。
for t in df.itertuples():
if t.text_number: # do not write if text number is None
with open(t.text_number + '.txt', 'w') as output:
output.write(str(t.text))
推荐阅读
- sql-server - SP_EXECUTESQL 中的 SQL 注入
- dataset - 在 KITTI 数据集中,哪个序列的初始速度为 0?
- flutter - Flutter GestureDetector 根本不工作
- angular - 剑道树视图的复选框样式问题
- swift - 丢弃 UITableView 内的更改不会反映在 UITextView 不可见但处于活动状态的单元格上
- react-bootstrap - 如何在图像的 src 路径中集成变量?
- python - 如何为 micropython 构建 sphinx 文档
- javascript - JSDOM - 将文档设置为全局值
- postgresql - PostgreSQL 返回最后 n 个单词
- php - 数据库字段的值可以用作 PHP 中的程序语句吗?