我有一个包含以下数据的CSV文件(node.csv):
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
当我尝试使用Pandas DataFrame打印文件中的数据时,绝对没有问题,因为输出看起来像我上面写的那样。 当我尝试使用以下代码将数据加载到列表中时出现问题:
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文件数据本身中是否需要进行任何修改? 在此先感谢您的帮助:)
答案 0 :(得分:3)
似乎第一列是你的索引。您可以将其用作行标签(索引),如下所示:sensor_values = pd.read_csv('node.csv', index_col=[0])
答案 1 :(得分:0)
虽然可以归功于@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'}}
答案 2 :(得分:0)
作为其他答案的替代方案,您可以将数据的子集发送到列表,而不是以不同的方式读取它:
df.loc[:,1:].values.tolist() #.loc slices from column 1 to the end here