【发布时间】:2026-01-19 19:00:01
【问题描述】:
我有几 (15) 个数据帧。它们包含基于一张地图的值,但它们具有碎片形式。
示例列表类似于A1 - 3k records, A2 - 6k records. B1 - 12k records, B2- 1k records, B3 - 3k records. C1... 等。
所有文件都有相同的格式,看起来:
name sample position position_ID
String1 String1 num1 num1
String2 String2 num2 num2
...
所有文件均来自各种生物微阵列。不同的公司有不同的矩阵,因此文件大小分散。但它们中的每一个都基于一个通用的完整数据库。只选择了主数据库中的一些数据。因此,单个记录可以在文件之间重复。我想看看它们是否兼容。
我想在这项任务中实现什么目标?
我想检查所有文件中的所有记录在name 方面是否都具有相同的位置和pos_ID 值。
如果被测试的同名记录在任何文件中的值不同,则必须写入error.csv。
如果到处都是一样的 - result.csv。
老实说,我不知道如何咬它,所以我在这里被引导暗示有人正在向我提出好的建议。我想用python来做。 我有两个想法。
- 将所有文件作为一个数据帧加载到 Pandas 中,并尝试编写一个函数来逐条过滤整个 DF 记录(使用 if 语句进行 for 循环?)。
- 通过python
read file打开分离所有文件并将唯一行添加到新列表中,当读取函数再次遇到相同的记录名称时,它会与以前的检查。如果其余的值都相同,则不写入就通过,否则,记录将写入error.csv。
但是,我担心这些可能不是最理想的方法,因此向您寻求建议并指导我寻求更好的方法?我读过关于 numpy 的文章,我还没有研究过,但也许值得在这个任务的背景下进行?也许已经为此创建了一个函数,而我不知道它?
有人可以提供更明智(也许更容易)的解决方案吗?
【问题讨论】:
-
I hope that I was able to clearly outline the problem- 不。the same positions or IDs- 为什么是 OR?为什么尺寸如此不同?我想问题实际上是关于理解数据和目标。至于工具pandas就是你所需要的。一旦你知道你想从数据中得到什么,应用它应该很简单。 -
好的,谢谢编辑。而且当然。尺寸与我无关。这些文件只是基因微阵列的结果,基因微阵列仅根据公司和需求检查整个地图中的特定记录。因此,一家公司的微阵列有 3k 条记录,另一家有 54k 条记录,并使用不同的记录。所以你认为我应该尝试第一个想法?还是我应该仍然使用熊猫但在分开的文件上?
-
我同意@Poolka,问题不是很清楚。作为起点,我会将所有 csvs 读取到数据帧中。然后我会去
df1["filename"] = 'file1.csv',这样我就可以跟踪一行的来源。然后我会使用df_all = pd.concat([df1,df2,etc], axis=1)将所有数据帧合并为一个。一旦以这种形式出现,您就可以做某事。我希望这是一个好的开始? -
@erncyp 谢谢你的建议。这是个好主意,我会试试的。 :) 关于帖子:我编辑了它,我希望现在更清楚了。
标签: python pandas csv numpy data-science