Эффективный в памяти способ для понимания списков данных Pandas с использованием нескольких столбцов - PullRequest
0 голосов
/ 26 октября 2019

Я хочу запустить функцию на строках кадра данных панд в понимании списка. Фрейм данных может иметь различное количество столбцов. Как заставить использовать эти столбцы dataframe?

import  pandas as pd

df = {'chrom': ['chr1', 'chr1','chr1'], 'start': [10000, 10100, 12000], 'end':[10150,10120,12250], 'S1':[1, 1, 1],'S2':[2, 2, 2],'S3':[3, 3, 3] }
df = pd.DataFrame(data=df)
print(df)

def func(row):
    print(row)


[func(row) for row in zip(df['chrom'],df['start'],df['S1'],df['S2'],df['S3'])]

Как сделать это эффективным способом памяти? Так что мы не получаем никаких ошибок памяти для больших фреймов данных.

1 Ответ

0 голосов
/ 26 октября 2019

Ваш метод понимания списка кажется немного более запутанным, чем нужно, особенно если учесть, что у фреймов данных pandas есть метод iterrows(). Вы можете заменить свою версию следующим:

for index, row in df.iterrows():
    func(row)

Но я предлагаю только вышеуказанный метод, потому что ваша функция, кажется, только печатает строку. В зависимости от того, что на самом деле делает func, вы можете рассмотреть возможность использования df.apply():

df.apply(func, axis=1)
...