Как читать файл CSV через каждую строку - PullRequest
0 голосов
/ 14 июня 2019

как мне брать из файла CSV данные каждые 2 строки?

Например, если у меня есть файл, который выглядит так

  0   1
0 23  34
1 45  45
2 78  16
3 110 78
4 48  14
5 76  23
6 55  33
7 12  13
8 18  76

как можно перебирать и извлекать каждую 2-ю строку, чтобы получить что-то подобное и добавить в новый фрейм данных?

0 23  34
2 78  16
4 48  14
6 55  33
8 18  76

Спасибо!

Ответы [ 3 ]

2 голосов
/ 14 июня 2019

Используйте параметр skiprows read_csv:

Чтобы сохранить четные строки:

pd.read_csv('file.csv', skiprows=lambda x: (x != 0) and not x % 2)

Чтобы сохранить нечетные строки:

pd.read_csv('file.csv', skiprows=lambda x: x % 2)

Обратите внимание, что заголовок включен в skiprows, поэтому в четном примере необходим x != 0.

Пример:

In [1]: import pandas as pd
   ...: from io import StringIO
   ...:
   ...: data = """A,B
   ...: a,1
   ...: b,2
   ...: c,3
   ...: d,4
   ...: e,5
   ...: """

In [2]: pd.read_csv(StringIO(data))
Out[2]:
   A  B
0  a  1
1  b  2
2  c  3
3  d  4
4  e  5

In [3]: pd.read_csv(StringIO(data), skiprows=lambda x: (x != 0) and not x % 2)
Out[3]:
   A  B
0  a  1
1  c  3
2  e  5

In [4]: pd.read_csv(StringIO(data), skiprows=lambda x: x % 2)
Out[4]:
   A  B
0  b  2
1  d  4
1 голос
/ 14 июня 2019

вы можете прочитать их все в памяти с помощью numpy и сохранить все остальные строки:

import numpy as np
import pandas as pd

data = np.loadtxt(filename)
data = pd.DataFrame(data[::2])

Последний бит [::2] означает «взять каждый второй элемент».

0 голосов
/ 14 июня 2019

Лично я думаю, что самый простой ответ (если вы хотите только строки с четными номерами) заключается в следующем:

import pandas as pd
df = pd.read_csv('csv_file.csv')
rows_we_want = [row for i,row in enumerate(df.index) if not i % 2]
df_new = df.loc[rows_we_want]

enumerate () - мощная функция в Python и «если нет, я% 2»Истинно, только когда номер строки (i) четный.Вы можете удалить «not», если хотите вместо этого иметь нечетные строки.Я думаю, что такой подход проще, чем построчное чтение в файле, хотя могут возникнуть проблемы с масштабируемостью, если ваш файл очень большой.Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...