Python pandas处理CSV如何移除默认索引并替换为eTime值
Python中移除CSV文件的索引编号
需求说明
需要移除pandas默认生成的数字行索引,将其替换为eTime字段的对应值。
原有实现代码:
import numpy as np import pandas as pd # load data from csv data = pd.read_csv('log_level_out_mini.csv', delimiter=';') time = data['eTime'] angka = data['eValue'] # Calculating cross-sectional area diameter = 0.1016 # 4 Inch A = 1/4 * np.pi * diameter ** 2 print('Luas penampang:', A) # Calculate Flow Rate Q = angka * A print('Flow Rate:', Q) # Calculate Volume
运行后默认输出带数字索引:
Time eValue 0 2017-07-16 00:00:50.017 -0.272 1 2017-07-16 00:01:50.017 -0.272 2 2017-07-16 00:02:50.020 -0.272 3 2017-07-16 00:03:50.003 -0.272 4 2017-07-16 00:04:50.020 -0.272 ... ... ... 10032 2017-07-22 23:55:23.803 0.588 10033 2017-07-22 23:56:23.793 0.580 10034 2017-07-22 23:57:23.787 0.583 10035 2017-07-22 23:58:23.797 0.569 10036 2017-07-22 23:59:23.800 0.549
解决方法
有两种常用实现方式,按需选择即可:
- 方式1:读取CSV文件时直接指定索引列,一步到位
在pd.read_csv中加入index_col参数,指定要作为行索引的列名即可,不需要修改后续计算逻辑:# 读取时直接将eTime设为行索引 data = pd.read_csv('log_level_out_mini.csv', delimiter=';', index_col='eTime') angka = data['eValue'] # 后续截面积、流量计算代码保持不变 diameter = 0.1016 # 4 Inch A = 1/4 * np.pi * diameter ** 2 print('Luas penampang:', A) Q = angka * A print('Flow Rate:', Q) - 方式2:数据读取完成后再修改索引
如果已经完成数据读取、不想重新加载文件,可以用set_index方法替换原有默认索引:# 原有读取代码不变 data = pd.read_csv('log_level_out_mini.csv', delimiter=';') # 将eTime列设置为新的行索引,替换原数字索引 data = data.set_index('eTime')
设置完成后再打印DataFrame,最左侧的行索引就会显示为eTime对应的时间值,不会再出现默认生成的数字序号。如果后续需要把处理后的数据导出为CSV文件,不需要保留索引的话可以在调用to_csv时传入index=False参数。
内容的提问来源于stack exchange,提问作者Cycloo
相关产品推荐
相关产品推荐

