将缺失值附加到 CSV 文件

Posted

技术标签:

【中文标题】将缺失值附加到 CSV 文件【英文标题】:Append missing values to CSV file 【发布时间】:2018-05-12 17:19:36 【问题描述】:

我有一个按以下格式排序的 CSV 文件-

X,Y
0,0
0,1
0,2
1,0
1,1
2,0
2,1
2,1

这里没有值1,2。这只是一个示例,我的文件包含 100 万条记录,而缺少几千条记录。如何编写脚本来检测这些值并将其附加到文件中?

我已经尝试生成所有可能的配对并检查它们是否存在于文件中,但是太慢了-

import csv

with open('myfile.csv') as csvfile:
r = csv.reader(csvfile, delimiter=',')

for row in r:

    for i in range(1000):
        for j in range(1000):
            if (int(row[0]) == i and int(row[1]) == j):
                # Can perform operations here

有什么方法可以使用 Numpy 或 Pandas(我对它们很陌生)来解决这个问题?

【问题讨论】:

是学术原因吗?否则你为什么不直接生成所有可能的配对并将其写入文件而不是检查是否丢失? 其实还有一列,每条记录都有一个计数值。 【参考方案1】:

使用集合的一种方式:

from intertools import product
import pandas as pd

df1 = pd.read_csv('myfile.csv')

set(product(df1.X.unique(), df1.Y.unique())).difference(set((i[1], i[2]) for i in df1.itertuples()))

输出:

(1, 2), (2, 2)

【讨论】:

我的答案未经测试。感谢检查出来。 (已删除) @amadispstac 如果此解决方案对您有帮助,您会考虑accepting it。 通知来了。最好在问题下发表评论。

以上是关于将缺失值附加到 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在数据框中指定缺失值

pandas使用read_csv函数读取文件并解析日期数据列(parse dates)pandas使用read_csv函数读取文件并将缺失值转化为空字符串

将 pandas 列转换为 datetime64,包括缺失值

pandas使用常数或者固定字符内容初始化创建dataframepandas使用read_csv函数读取文件并使用fillna函数填充缺失值

pandas使用read_csv函数读取文件时指定数据列的数据类型pandas使用read_csv函数读取文件时通过keep_default_na参数设置缺失值替换为空字符串

pandas 处理缺失值[dropna、drop、fillna]