python - 在 python 中高级处理多个数据帧

标签 python pandas csv numpy data-science

我得到了几(15)个数据框。它们包含基于一张 map 的值,但它们具有碎片形式。

样本列表看起来像A1 - 3k 记录,A2 - 6k 记录。 B1 - 12k 条记录,B2 - 1k 条记录,B3 - 3k 条记录。 C1...

所有文件都具有相同的格式,看起来:

name     sample    position    position_ID
String1   String1      num1        num1
String2   String2      num2        num2
...

所有文件均来自各种生物微阵列。不同的公司有不同的矩阵,因此文件大小分散。但它们中的每一个都基于一个通用的完整数据库。仅选择主数据库中的部分数据。因此,各个记录可以在文件之间重复。我想看看它们是否兼容。

我想在这项任务中实现什么目标?

我想检查所有文件中的所有记录在 name 方面是否相同,具有相同的位置和 pos_ID 值。 如果任何文件中的同名测试记录的值不同,则必须将其写入error.csv。 如果到处都一样 - result.csv。

说实话,我不知道如何咬它,所以我被引导到这里,并暗示有人正在向我提供很好的建议。我想用 python 来做。 我有两个想法。

  1. 将所有文件作为一个数据帧加载到 Pandas 中,并尝试编写一个逐条记录过滤整个 DF 记录的函数(带有 if 语句的 for 循环?)。
  2. 通过python读取文件打开单独的所有文件,并将唯一的行添加到新列表中,当读取函数再次遇到相同的记录名称时,它会与之前的记录进行检查。如果其余所有值都相同,则不写入而通过,如果否,记录将写入 error.csv 中。

但是,我担心这些可能不是最好的方法,因此向您寻求建议并指导我更好的方法?我读过有关 numpy 的内容,我还没有研究它,但也许在这个任务的背景下值得吗?也许已经为此创建了一个函数,但我不知道?

有人可以提供更明智(也许更简单)的解决方案吗?

最佳答案

我想我大概知道你要去哪里了。这就是我的处理方法

import pandas as pd

df1 = pd.read_csv("file1.csv")
df2 = pd.read_csv("file2.csv")
df1["filename"] ="file1.csv"
df2["filename"] ="file2.csv"

df_total = pd.concat([df1,df2],axis=1) # stacks them vertically

df_total_no_dupes = df_total.drop_duplicates() # drops duplicate rows

# this gives you the cases where id occures more than once
name_counts = df_total_no_dupes.groupby("name").size().reset_index(name='counts')

names_which_appear_more_than_once = name_counts[name_counts["counts"] > 1]["name"].unique()

filter_condition = df_total_no_dupes["name"].isin(names_which_appear_more_than_once)

# this should be your dataframe where there are at least two rows with same name but different values.
print(df_total_no_dupes[filter_condition].sort_values("name"))

关于python - 在 python 中高级处理多个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55394087/

相关文章:

python - 如何通过绘图通过 Python doctest

javascript - 选择后显示日期时间

python - vscode python 调试,launch.json 中参数语法错误

python - 将元组索引转换为日期时间索引

python从特定行位置的数据帧收集数据

python - pandas:计算键对之间的所有交集

jquery - 从逗号分隔列表中删除重复项

python - 如何使用rest API查询Azure表存储

java - 从oracle数据库导出到csv文件

PHP fputcsv 生成空文件