0

我正在尝试重构以下伪代码逻辑,以使用 pandas 将函数从读取和写入文件全部存储在内存中,但withpandas dataframe.

这是我要重构的代码:

results = []
with open('data.csv', 'rt') as ins:
    next(ins)  # drop header
    a1, b1, c1 = next(ins).strip().split(',')
    for i, line in enumerate(ins, 2):
        a2, b1, c1 = line.strip().split(',')
        ...
        results.append(dummy_func(a1 b1, c1))
    else:
        results.append(dummy_func(a1 b1, c1))

这是内存中的等价物吗,特别是我不确定with ins文件中是否有行,我是否需要两者itertuples,并且在旁注中itertuples最好在这里使用,比例如更快iterrows

import pandas as pd
df = pd.read_csv('data.csv', sep=',')
results = []
for row in df.itertuples():
    a1, b1, c1 = row.a, row.b, row.c
    for row2 in df.loc[2:].itertuples():
        a1, b1, c1 = row2.a, row2.b, row2.c
        ...
        result.append(dummy_func(a1, b1, c1))
    else: 
        result.append(dummy_func(a1, b1, c1))
4

1 回答 1

0

好的,我误解了这with句话,这就是答案

import pandas as pd
df = pd.read_csv('data.csv', sep=',')
results = []
a1, b1, c1 = row.a, row.b, row.c
for row2 in df.loc[1:].itertuples():
    a1, b1, c1 = row2.a, row2.b, row2.c
    ...
    result.append(dummy_func(a1, b1, c1))
else: 
    result.append(dummy_func(a1, b1, c1))
于 2019-07-19T18:47:04.913 回答