在 Python 中压缩大 table 的最有效方法是什么

What is the most efficient way of condensing a large table in Python

我需要在单元格中压缩一些重复的字段值

SFN 编号将是唯一的,相关值将压缩在一个单元格中。例如,我将为 1008-12 创建一行,PermitNo 将为 [3245, 3246],Elevation 将为 [1100, 1000],Year 将为 [2016, 2014] 等等。我只想要每个 SFN 的唯一值,但要按各自的顺序排列。

我想出的最好的主意是为要压缩的每个字段创建字典,并使用 for 循环遍历行,然后将字典写回新的 table。

这样做好吗?有没有更好的方法来做到这一点,例如对象收集、点头等?我的意思是 space 和效率的时间。我有 100 万多行。我想我的记忆力还可以,但需要一些时间。

您可以使用 python 个集合进行聚合:

df.groupby('col1', as_index=False).agg(set)

这是一个虚拟示例,因为您没有以文本形式提供数据集:

输入:

  col1 col2  col3
0    A    a     0
1    A    b     1
2    A    a     2
3    B    b     1
4    B    a     2
5    B    d     1
6    C    a     0
7    C    c     1
8    C    b     0

输出:

  col1       col2       col3
0    A     {b, a}  {0, 1, 2}
1    B  {d, b, a}     {1, 2}
2    C  {b, a, c}     {0, 1}

您很可能会想要使用 pandas 来执行此操作,因为它正是为此而构建的。

import pandas as pd
df = pd.read_csv("/path/to/your/data.csv")
df = df.groupby('SFN').agg(set).reset_index()

我认为这应该适用于您的示例,但由于您没有提供数据,我还没有测试它。