Разделение обработки на блоки для комбинаций Itertools - PullRequest
0 голосов
/ 07 мая 2020

Я использую комбинации от itertools до go в большой электронной таблице и меняю некоторые значения, чтобы ввести их в конкретное программное обеспечение c.

Пока что это действительно хорошо работает для небольших наборов данных но это приводит к сбою компьютера с большим компьютером - по крайней мере, я думаю, что это происходит с кодом выхода -9 на Windows, это, кажется, означает, что у меня не хватает системной памяти.

Так что мне было интересно, есть ли способ разделить приведенный ниже код, чтобы его можно было обрабатывать по частям для экономии системной памяти:

def create_edges():
df_nodes = pd.read_csv("AllData.csv", dtype=object, usecols=['Id', 'Link'])
df_temp = df_nodes.groupby('Link')['Id'].unique()
df_temp = df_temp.reset_index()
a = []
for x in df_temp['Id']:
    a += [{'Source': y[0], 'Target': y[1]} for y in combinations(x, 2)]
df_edges = pd.DataFrame(a)
df_edges["Type"] = "Undirected"
df_edges["Weight"] = 1
df_edges.to_csv("edges.csv", header=["Source", "Target", "Type", "Weight"], index=None)
...