简体   繁体   English

无法从csv读取的熊猫数据框中选择一行

[英]Can't select a row from a pandas dataframe, read from a csv

I have a csv with some data that I'm reading into pandas: 我有一个csv,其中包含一些我正在读入熊猫的数据:

filename = sys.argv[1]

data = pd.read_csv(filename, sep=';', header=None)

xy = data

print str(xy)

Result: 结果:

       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

However, when I try to select a frame: 但是,当我尝试选择一个框架时:

xy = data['2']
xy = data['y']
xy = data['label']

It just gives me the same error: 它只是给我同样的错误:

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'

How should I be formatting my selection request? 我应该如何格式化选择请求?

EDIT : Thanks to @Merlin's help, I got it working: 编辑 :多亏@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))

Gives me: 给我:

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

Try this: 尝试这个:

filename = sys.argv[1]
df       = pd.read_csv(filename, sep=';')
xy       = df

Do not name your dataframe "data"; 不要将数据框命名为“数据”; One of your column headers is named data! 您的列标题之一就是data! . Then: for i, row in df.iterrows(): a = str(df['label'][i]) b = str(df['data'][i]) print ("Row: {} - Data: {}".format(a,b)) 然后:对于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() 

I dont know what you are expecting 我不知道你在期待什么

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

Another edit: 另一个编辑:

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.

相关问题 如何使用 Pandas 将 csv 中的多行读取到单个数据帧行中 - How to read multiple lines from csv into a single dataframe row with pandas 如何将数据从 csv 读取到具有多列的 pandas dataframe 中? - How can the data be read from a csv into a pandas dataframe, with multiple columns? 熊猫数据框无法从CSV绘制x值 - Pandas dataframe can't plot x values from CSV 从熊猫的数据框中随机选择唯一的行 - Randomly select unique row from dataframe in Pandas 无法读取从 JSON 导入的 pandas dataframe 列 - Can't read pandas dataframe columns imported from JSON 从 csv 文件读取时,Pandas drop_duplicates() 在向 DataFrame 添加一行后不起作用 - Pandas drop_duplicates() not working after add a row to DataFrame when read from a csv file 如何使用pandas.read_csv将CSV文件中的数据插入数据框? - How can I insert data from a CSV file into a dataframe using pandas.read_csv? 当熊猫的 read_csv() 不能时,为什么 R 的 read.csv() 可以从 GitLab URL 读取 CSV? - Why can R's read.csv() read a CSV from GitLab URL when pandas' read_csv() can't? 对于没有标题行的csv,如何从pandas.Series.from_csv 切换到pandas.read_csv? - how to switch from pandas.Series.from_csv to pandas.read_csv for the csv without header row? 如何将具有多索引行和列索引的 pandas dataframe 导出和导入 csv 文件? - How can I export and import a pandas dataframe with multiindex row and column index into/from a csv file?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM