代码之家  ›  专栏  ›  技术社区  ›  user136819

如何忽略CSV文件中的第一个值?

  •  0
  • user136819  · 技术社区  · 8 年前

       0     1     2     3     4
    0  12.0  12.5  11.0  10.0  nan
    1  15.0  18.0  nan   15.0  17.0
    2  20.0  nan   20.0  28.0  27.0
    
    #####This is the output from the following format of data:
    
    sensor_values = {0: {0: 12.0, 1: 15.0, 2: 20.0},
                     1: {0: 12.5, 1: 18.0, 2: np.nan},
                     2: {0: 11.0, 1: np.nan, 2: 20.0},
                     3: {0: 10.0, 1: 150.0, 2: 28.0},
                     4: {0: np.nan, 1: 15.0, 2: 27.0}
                    }
    

    当然,以上数据是为了更清楚地了解情况。文件中的实际数据如下所示:

    ,0,1,2,3,4
    0,12.0,12.5,11.0,10.0,np.nan
    1,15.0,18.0,np.nan,15.0,17.0
    2,20.0,np.nan,20.0,28.0,27.0
    

    当我尝试使用以下代码将数据加载到列表中时,就会出现问题:

    import pandas as pd
    
    #some other code
    
    sensor_values = pd.read_csv('node.csv')
    
    #or using this instead of read_csv -
    #sensor_values = pd.DataFrame.from_csv('node.csv')
    
    sensor_values = sensor_values.values.tolist()
    

    它总是接收CSV数据文件第一行第一列(“,…)中的空白数据,我不想在脚本中使用这些数据。我只想获取相关数据,但它似乎总是从空白值开始获取数据。
    我该如何防止这种情况?
    我需要对CSV文件数据本身进行任何修改吗?

    3 回复  |  直到 8 年前
        1
  •  3
  •   Amine Benatmane    8 年前

    第一列似乎是您的索引。您可以将其用作行标签(索引),如下所示: sensor_values = pd.read_csv('node.csv', index_col=[0])

        2
  •  0
  •   Anton vBR    8 年前

    虽然@jezrael获得了荣誉,但您要查找的文档可以在这里找到: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

    import pandas as pd
    import io
    
    data = """,0,1,2,3,4
    0,12.0,12.5,11.0,10.0,np.nan
    1,15.0,18.0,np.nan,15.0,17.0
    2,20.0,np.nan,20.0,28.0,27.0
    """
    
    df = pd.read_csv(io.StringIO(data),index_col=0)
    df.to_dict()
    

    输出

    {'0': {0: 12.0, 1: 15.0, 2: 20.0},
     '1': {0: '12.5', 1: '18.0', 2: 'np.nan'},
     '2': {0: '11.0', 1: 'np.nan', 2: '20.0'},
     '3': {0: 10.0, 1: 15.0, 2: 28.0},
     '4': {0: 'np.nan', 1: '17.0', 2: '27.0'}}
    
        3
  •  0
  •   jeremycg    8 年前

    df.loc[:,1:].values.tolist() #.loc slices from column 1 to the end here