Python 3 ~ Как взять строки из файла csv и поместить их в список - PullRequest
2 голосов
/ 06 августа 2020

Я хотел бы знать, как взять этот файл:

name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5
Charlie,3,2,5

и поместить его в список вроде следующего:

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

Я новичок в python так что извините, мой текущий код выглядит так:

file = open(argv[1] , "r")
file1 = open(argv[2] , "r")

text = file1.read()

strl = []


with file:

    csv = csv.reader(file,delimiter=",")

    for row in csv:
        strl = row[1:9]
        break

    df = pd.read_csv(argv[1],header=0)
    df = [df[col].tolist() for col in df.columns]

игнорировать часть strl для чего-то еще не связанного

, но он выводит так:

[['Alice', 'Bob', 'Charlie'], [2, 4, 3], [8, 1, 2], [3, 5, 5]]

Я хочу, чтобы он выводился следующим образом:

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

Я бы хотел, чтобы он выводился, как в приведенном выше примере

1 Ответ

2 голосов
/ 06 августа 2020

Использование pandas

In [13]: import pandas as pd

In [14]: df = pd.read_csv("a.csv",header=None)

In [15]: df
Out[15]:
         0  1  2  3
0    Alice  2  8  3
1      Bob  4  1  5
2  Charlie  3  2  5

In [16]: [df[col].tolist() for col in df.columns]
Out[16]: [['Alice', 'Bob', 'Charlie'], [2, 4, 3], [8, 1, 2], [3, 5, 5]]

Обновление:

In [51]: import pandas as pd

In [52]: df = pd.read_csv("a.csv",header=None)

In [53]: data = df[df.columns[1:]].to_numpy().tolist()

In [57]: data.insert(0,df[0].tolist())

In [58]: data
Out[58]: [['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

Обновление:

In [51]: import pandas as pd

In [52]: df = pd.read_csv("a.csv")

In [94]: df
Out[94]:
      name  AGATC  AATG  TATC
0    Alice      2     8     3
1      Bob      4     1     5
2  Charlie      3     2     5

In [97]: data = df.loc[:, df.columns != 'name'].to_numpy().tolist()

In [98]: data.insert(0, df["name"].tolist())

In [99]: data
Out[99]: [['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]
...