[英]How to read multiple lines from csv into a single dataframe row with pandas
[英]Can't select a row from a pandas dataframe, read from a csv
我有一個csv,其中包含一些我正在讀入熊貓的數據:
filename = sys.argv[1]
data = pd.read_csv(filename, sep=';', header=None)
xy = data
print str(xy)
結果:
0 1
0 label data
1 x 6,8,10,14,18
2 y 7,9,13,17.5,18
3 z 0,0,1,1,1
4 r 2,13,31,33,34,4324,32413,431,666
但是,當我嘗試選擇一個框架時:
xy = data['2']
xy = data['y']
xy = data['label']
它只是給我同樣的錯誤:
Traceback (most recent call last):
File "Regress[AA]--[01].py", line 10, in <module>
xy = data['label']
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 1997, in __getitem__
return self._getitem_column(key)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 2004, in _getitem_column
return self._get_item_cache(key)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 1350, in _get_item_cache
values = self._data.get(item)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/internals.py", line 3290, in get
loc = self.items.get_loc(item)
File "/usr/local/lib/python2.7/dist-packages/pandas/indexes/base.py", line 1947, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/index.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandas/index.c:4154)
File "pandas/index.pyx", line 161, in pandas.index.IndexEngine.get_loc (pandas/index.c:4084)
KeyError: 'label'
我應該如何格式化選擇請求?
編輯 :多虧@Merlin的幫助,我才能正常工作:
filename = sys.argv[1]
df = pd.read_csv(filename, sep=';')
for i in range(len(df.label)):
a = str(df['label'][i])
b = str(df['data'][i])
print ("Row: {} - Data: {}".format(a,b))
給我:
Row: x - Data: 6,8,10,14,18
Row: y - Data: 7,9,13,17.5,18
Row: z - Data: 0,0,1,1,1
Row: r - Data: 2,13,31,33,34,4324,32413,431,666
嘗試這個:
filename = sys.argv[1]
df = pd.read_csv(filename, sep=';')
xy = df
不要將數據框命名為“數據”; 您的列標題之一就是data!
。 然后:對於i,在df.iterrows()中的行:a = str(df ['label'] [i])b = str(df ['data'] [i])打印(“行:{}-數據:{}“。format(a,b))
print df.head()
print df.info()
print df["data"].head()
我不知道你在期待什么
from StringIO import StringIO
import pandas as pd
text = u"""label;data
x;6,8,10,14,18
y;7,9,13,17.5,18
z;0,0,1,1,1
r;2,13,31,33,34,4324,32413,431,666"""
df = pd.read_csv(StringIO(text),sep=';')
df
label data
0 x 6,8,10,14,18
1 y 7,9,13,17.5,18
2 z 0,0,1,1,1
3 r 2,13,31,33,34,4324,32413,431,666
df.head()
label data
0 x 6,8,10,14,18
1 y 7,9,13,17.5,18
2 z 0,0,1,1,1
3 r 2,13,31,33,34,4324,32413,431,666
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
label 4 non-null object
data 4 non-null object
dtypes: object(2)
memory usage: 136.0+ bytes
df["data"][1]
'7,9,13,17.5,18'
df["label"]
0 x
1 y
2 z
3 r
Name: label, dtype: object
另一個編輯:
for i, row in df.iterrows():
a = str(df['label'][i])
b = str(df['data'][i])
print ("Row: {} - Data: {}".format(a,b))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.