首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理熊猫的多值线缆

如何处理熊猫的多值线缆
EN

Stack Overflow用户
提问于 2018-12-19 05:04:45
回答 1查看 1.5K关注 0票数 4

我在我试图解析的csv文件中将\x02\n作为行终止符。然而,我不能在熊猫中使用两个字符,它只允许一个字符,例如:

代码语言:javascript
运行
复制
>>> data = pd.read_csv(file, sep="\x01", lineterminator="\x02")
>>> data.loc[100].tolist()
['\n1475226000146', '1464606', 'Juvenile', '1', 'http://itunes.apple.com/artist/juvenile/id1464606?uo=5', '1']

或者:

代码语言:javascript
运行
复制
data = pd.read_csv(file, sep="\x01", lineterminator="\n")
 >>> data.loc[100].tolist()
['1475226000146', '1464606', 'Juvenile', '1', 'http://itunes.apple.com/artist/juvenile/id1464606?uo=5', '1\x02']

在这里,我们可以看到,\n没有被正确地砍掉。使用上述分隔符读取熊猫csv文件的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 05:19:01

截止到0.23版,熊猫不支持多字符的终端机。您的代码当前返回:

代码语言:javascript
运行
复制
s = "this\x01is\x01test\x02\nthis\x01is\x01test2\x02"
df = pd.read_csv(
    pd.compat.StringIO(s), sep="\x01", lineterminator="\x02", header=None)

df
        0   1      2
0    this  is   test
1  \nthis  is  test2

您的唯一选项(到目前为止)是从第一列中移除前面的空格。您可以使用str.lstrip来完成这个任务。

代码语言:javascript
运行
复制
df.iloc[:, 0] = df.iloc[:, 0].str.lstrip()
# Alternatively,
# df.iloc[:, 0] = [s.lstrip() for s in df.iloc[:, 0]]

df

      0   1      2
0  this  is   test
1  this  is  test2

如果您必须处理多个其他类型的线终止符的剥离(除了换行符),您可以传递其中的字符串:

代码语言:javascript
运行
复制
line_terminators = ['\n', ...]
df.iloc[:, 0] = df.iloc[:, 0].str.lstrip(''.join(line_terminators))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53844875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档