You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas加载CSV并拆分嵌套逗号分隔列的技术问询

如何用Pandas加载CSV并拆分十六进制数据列

问题背景

我有这样的样本CSV数据:

2017-11-27T00:29:37.698-06:00,"42,00,00,00,3E,51,1B,D7,42,1C,00,00,40"
2017-11-27T00:29:37.698-06:00,"42,00,00,00,3E,51,1B,D7,42,1C,00,00,40"
2017-11-27T00:29:37.698-06:00,"42,00,00,00,3E,51,1B,D7,42,1C,00,00,40"

一开始用pd.read_csv("sample.csv", header=None)加载后,数据被错误拆分出了空列,且第三列的十六进制串是整体的:

012
02017-11-27T00:29:37.698-06:00NaN42,00,00,00,3E,51,1B,D7,42,1C,00,00,40
12017-11-27T00:29:37.698-06:00NaN42,00,00,00,3E,51,1B,D7,42,1C,00,00,40
22017-11-27T00:29:37.698-06:00NaN42,00,00,00,3E,51,1B,D7,42,1C,00,00,40

我需要保留第一列的时间戳,同时把第三列的十六进制数据拆分成单独的列,最终得到这样的结构:

01234...
02017-11-27T00:29:37.698-06:0042000000...
12017-11-27T00:29:37.698-06:0042000000...
22017-11-27T00:29:37.698-06:0042000000...

解决方案

问题根源是CSV里的十六进制串被引号包裹,默认的read_csv没有识别引号内的逗号是字段内部分隔符,导致错误拆分。这里提供两种可行的处理方式:

方法1:加载时直接处理(更高效)

在加载数据时指定quotechar='"',让Pandas识别引号内的内容为单个字段,再拆分十六进制列:

import pandas as pd

# 加载数据,指定引号字符避免内部逗号被错误拆分
df = pd.read_csv("sample.csv", header=None, quotechar='"')

# 拆分第三列(索引为2)的逗号分隔数据,生成新的DataFrame
hex_columns = df[2].str.split(',', expand=True)

# 合并时间戳列和拆分后的十六进制列
final_df = pd.concat([df[0], hex_columns], axis=1)

# 可选:给列重命名,方便后续使用
final_df.columns = ['timestamp'] + [f'hex_{i}' for i in range(hex_columns.shape[1])]

print(final_df.head())

方法2:先加载再清理(适合已加载数据的场景)

如果已经加载了带有空列的数据,可以先删除空列再拆分:

import pandas as pd

# 原来的加载方式
df = pd.read_csv("sample.csv", header=None)
# 删除空的第二列(索引1)
clean_df = df.drop(columns=1)
# 拆分原第三列(现在是索引1)
hex_columns = clean_df[1].str.split(',', expand=True)
# 合并时间戳和拆分后的列
final_df = pd.concat([clean_df[0], hex_columns], axis=1)

print(final_df.head())

两种方法都能实现需求,第一种从加载阶段就避免了错误拆分,更推荐使用。


内容的提问来源于stack exchange,提问作者gokyori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:34:26