Python重复数据消除记录-重复数据消除

Python重复数据消除记录-重复数据消除,python,pandas,dictionary,record-linkage,python-dedupe,Python,Pandas,Dictionary,Record Linkage,Python Dedupe,我想用python来消除一些记录的重复。看看他们的例子 data_d = {} for row in data: clean_row = [(k, preProcess(v)) for (k, v) in row.items()] row_id = int(row['id']) data_d[row_id] = dict(clean_row) 与pandas使用pd.Datafrmae创建的词典,甚至与普通pd.Dataframe创建的词典相比,该词典消耗了大量内存 如

我想用python来消除一些记录的重复。看看他们的例子

data_d = {}
for row in data:
    clean_row = [(k, preProcess(v)) for (k, v) in row.items()]
    row_id = int(row['id'])
    data_d[row_id] = dict(clean_row)
与pandas使用pd.Datafrmae创建的词典,甚至与普通pd.Dataframe创建的词典相比,该词典消耗了大量内存

如果需要这种格式,如何将pd.Dataframe有效地转换为这样的字典

编辑 熊猫产生的例子

{'column1': {0: 1389225600000000000,
  1: 1388707200000000000,
  2: 1388707200000000000,
  3: 1389657600000000000,....
重复数据消除的预期示例

{'1': {column1: 1389225600000000000, column2: "ddd"},
 '2': {column1: 1111, column2: "ddd} ...}

似乎
df.to_dict(orient='index')
将生成您要查找的表示:

进口大熊猫

data = [[1, 2, 3], [4, 5, 6]]
columns = ['a', 'b', 'c']

df = pandas.DataFrame(data, columns=columns)

df.to_dict(orient='index')
导致

{0: {'a': 1, 'b': 2, 'c': 3}, 1: {'a': 4, 'b': 5, 'c': 6}}

似乎
df.to_dict(orient='index')
将生成您要查找的表示:

进口大熊猫

data = [[1, 2, 3], [4, 5, 6]]
columns = ['a', 'b', 'c']

df = pandas.DataFrame(data, columns=columns)

df.to_dict(orient='index')
导致

{0: {'a': 1, 'b': 2, 'c': 3}, 1: {'a': 4, 'b': 5, 'c': 6}}

您可以尝试以下方法:

df = pd.DataFrame({'A': [1,2,3,4,5], 'B': [6,7,8,9,10]})
A   B
0  1   6
1  2   7
2  3   8
3  4   9
4  5  10

print(df.T.to_dict())
{0: {'A': 1, 'B': 6}, 1: {'A': 2, 'B': 7}, 2: {'A': 3, 'B': 8}, 3: {'A': 4, 'B': 9}, 4: {'A': 5, 'B': 10}}

这与@chthonicdaemon答案中的输出相同,因此他的答案可能更好。我正在使用转置索引和列。

您可以尝试以下方法:

df = pd.DataFrame({'A': [1,2,3,4,5], 'B': [6,7,8,9,10]})
A   B
0  1   6
1  2   7
2  3   8
3  4   9
4  5  10

print(df.T.to_dict())
{0: {'A': 1, 'B': 6}, 1: {'A': 2, 'B': 7}, 2: {'A': 3, 'B': 8}, 3: {'A': 4, 'B': 9}, 4: {'A': 5, 'B': 10}}

这与@chthonicdaemon答案中的输出相同,因此他的答案可能更好。我正在使用转换索引和列。

不需要python字典,您只需要一个允许按列名进行索引的对象。i、 e.
行['col_name']

因此,假设
data
是一个数据帧,那么它应该能够执行以下操作:

data_d = {}
for row_id, row in data.iterrows():
    data_d[row_id] = row

也就是说,python dicts的内存开销不会出现重复数据消除中的内存瓶颈。

不需要python字典,只需要一个允许按列名索引的对象。i、 e.
行['col_name']

因此,假设
data
是一个数据帧,那么它应该能够执行以下操作:

data_d = {}
for row_id, row in data.iterrows():
    data_d[row_id] = row

也就是说,python dicts的内存开销不会出现重复数据消除中的内存瓶颈。

您可以使用
数据帧将Pandas数据帧转换为dictionary。to_dict()
,这就是您要寻找的吗?的确,但这就是列>索引>值,它们似乎需要索引>列>值,为每个记录重新生成列键。我认为这将从一个数据示例中受益匪浅。您的意思是,如果列是
'A'
'B'
,您正在寻找这样的内容:
{0:{'A':1.0,'B':6.0},1:{'A':2.0,'B':7.0}
请查看我的编辑您可以使用
数据框将Pandas数据框转换为字典。对于_dict()
,这就是您要找的吗?的确,但这就是列>索引>值,它们似乎需要索引>列>值,为每个记录重新生成列键。我认为这将从一个数据示例中受益匪浅。您的意思是,如果列是
'A'
'B'
,您正在寻找这样的内容:
{0:{'A':1.0,'B':6.0},1:{'A':2.0,'B':7.0}
请参见我的编辑