Pandas读取CSV后如何跳过Zeit列对其余Kanal列执行乘1000运算
问题分析
- 现有代码存在两个核心问题:
- 使用
skipcols = [0]参数会直接丢弃Zeit列,导致最终DataFrame缺少所需的时间维度数据 - 对完整DataFrame执行
mul(1000)操作会连同Zeit列一起做乘法,不符合保留原始时间值的需求
- 使用
调整后代码
if a['Kanal A'][0] == '(V)': # 移除skipcols参数,保留Zeit列 df6 = pd.read_csv(MU6, sep = ';', skiprows=[1,2], dtype=float, decimal=',') # 仅对Kanal A到Kanal D四列执行乘1000操作 df6[['Kanal A', 'Kanal B', 'Kanal C', 'Kanal D']] *= 1000
如果Kanal列的顺序固定为第2到第5列(列索引为1到4),也可以用索引批量选择,简化代码:
if a['Kanal A'][0] == '(V)': df6 = pd.read_csv(MU6, sep = ';', skiprows=[1,2], dtype=float, decimal=',') # 选择除第一列外的所有列做乘法 df6.iloc[:, 1:] *= 1000
可选优化
如果后续需要标注单位变化,可直接修改列名:
df6.rename( columns={ 'Kanal A': 'Kanal A (mV)', 'Kanal B': 'Kanal B (mV)', 'Kanal C': 'Kanal C (mV)', 'Kanal D': 'Kanal D (mV)' }, inplace=True )
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

