1

以下のようなテキスト ファイル (data.txt) があります。

name height  weight
    A   15.5    55.7
    B   18.9    51.6
    C   17.4    67.3
    D   11.4    34.5
    E   23.4    92.1

パンダを使用して各列のリストをPythonで作成したい。

import pandas
with open (pandas.read_csv('data.txt')) as df:
    name= df.icol(0)
    height= df.icol(1)
    weight= df.icol(2)
    print (name)
    print (height)
    print (weight)

また、リストからヘッダー (名前、身長、体重) を避けたいと考えています。

print (df) は次のように提供します。

name\theight\tweight
0        A\t15.5\t55.7
1        B\t18.9\t51.6
2        C\t17.4\t67.3
3        D\t11.4\t34.5
4        E\t23.4\t92.1
4

4 に答える 4

2

pandas を使用する理由は明確ではありません。なぜなら、特にリストにパンダが必要な理由を述べていないためですcsv

import csv

with open('data.txt') as f:
    reader = csv.DictReader(f, delimiter='\t')
    rows = list(reader)

rowsこれは辞書のリストで、それぞれに行を表すヘッダーが付いています。各列を取得するには:

names = [i['name'] for i in rows]
heights = [float(i['height']) if i['height'] else 0.0 for i in rows]
weights = [float(i['weight']) if i['weight'] else 0.0 for i in rows]
于 2013-06-12T05:14:56.497 に答える
1

次のようなことを試してください:

import pandas
df = pandas.read_csv('data.txt')
# Assuming there's a columns with the headers 'name', 'height', 'weight'
name = list(df['name'])
height = list(df['height'])
weight = list(df['weight'])
print name
print height
print weight

この例で遊んでread_csvのドキュメントを見た後、これはうまくいくかもしれないと考えました

ヘッダーをもう少し動的にしたい場合は、次のことができます

for k in df.keys():
    l = list(df[k])
    print l

すべての列を反復処理し、それらのリストを作成します。

于 2013-06-12T04:40:01.200 に答える
0

上記のテキスト ファイルの例では、最初の列の先頭に空白があるため、テーブルのインポートが正しく行われないように、次のようにする必要があります。

df = pandas.read_csv("pandas_test.txt", sep=r"\s+")
于 2013-06-12T15:34:33.480 に答える
0

Series (例: DataFrame の列) をヘッダーのない通常の Python の値のリストに変換するには、Series メソッドを使用しますtolist()

In [9]: df
Out[9]: 
  name  height  weight
0    A    15.5    55.7
1    B    18.9    51.6
2    C    17.4    67.3
3    D    11.4    34.5
4    E    23.4    92.1

In [10]: name, height, weight = [df[col].tolist() for col in df]

In [11]: name
Out[11]: ['A', 'B', 'C', 'D', 'E']

等々。

于 2013-06-12T04:38:39.900 に答える