这篇文章是熊猫输出引用问题to_csv后续。
比方说,我用文本数据创建了一个数据帧。此文本数据存储为字符串列表:
In [1]: import pandas as pd
In [2]: text = ['this', 'is', '"out text"']
...: df_pre = pd.DataFrame(index=['1'], columns=['one','two'])
...: df_pre.loc['1','one'] = 123
...: df_pre.loc['1','two'] = text
检查预读数据帧的列:
In [3]: df_pre
Out[3]:
one two
1 123 [this, is, "out text"]
In [4]: df_pre.two.iloc[0]
Out[4]: ['this', 'is', '"out text"']
这正是我想要的:df。two
是字符串列表,字符串元素中的引号将被保留。
但当我将df作为csv写入并读取时:
In [5]: df_pre.to_csv('foo.txt', index=False)
In [5]: df_post = pd.read_csv('foo.txt')
我看到df.two
有不同的表示方式,所以现在在读取后的数据帧中有额外的引文:
In [6]: df_post
Out[6]:
one two
0 123 ['this', 'is', '"out text"']
在这里:
In [7]: df_post.two.iloc[0]
Out[7]: '[\'this\', \'is\', \'"out text"\']'
问题是,如果我想遍历df中的每个字符串元素。每行有两个
列,我必须处理包装每个元素的附加引号。所以,如果我想用post数据帧计算“这”发生的次数,我会得到0。
我的问题是:
我已经尝试了所有级别的引用(即[0,3]),但没有任何效果。我的目标是处理多行文本数据(标记化、词干分析等),并将工作保存为csv格式以供以后操作。
作为后续行动,我希望帖子看起来像pre:
预报价(无附加报价):
In [8]: df_pre
Out[8]:
one two
1 123 [this, is, "out text"]
邮寄(附附加报价):
In [9]: df_post
Out[9]:
one two
0 123 ['this', 'is', '"out text"']
解决方案
df_post.two = df_post.two.apply(eval)
CSV需要能够以一种可以重新加载的方式存储数据,以便它能够转义有意义的字符(特别是逗号,它是默认的列分隔符,单引号,否则将终止字符串)。
要将其从转义格式转换回,可以使用eval:
input = '[\'this\', \'is\', \'"out text"\']'
output = eval(input)
该操作也可以在数据帧的整个列上执行。
问题内容: 我想替换列中的子字符串 到。 需求输出 我尝试,但它返回。 问题答案: 使用与更换和:
问题内容: 我对此有一个类似的问题:Pandas DataFrame:从一列中的字符串中删除不需要的部分 。 所以我用了: 大多数项目以“ PPI /”开头,但并非全部。似乎当没有’PPI /’后缀的项目遇到此错误时: AttributeError:“ float”对象没有属性“ lstrip” 我在这里想念什么吗? 问题答案: 使用replace: 或string.replace:
问题内容: 如问题所述,我有一个很大的数据框,但看起来像: 我试图摆脱文本数据,并将其替换为预定义的数值等效项。例如,在这种情况下,我想分别用或替换的或值。有没有一种方法无需我手动输入和更改值? 问题答案: / 上面的一个有趣的通用版本: 一切都不是。
我有以下数据框 我想用替换和,因此最终的数据帧是 我尝试了以下方法,但不起作用:
我有一个相当大的数据帧(11k行和20列)。其中一列的数据类型是混合的,主要是数字(float),其中有少量字符串分散在各处。 在使用混合列中的数据执行一些统计分析之前,我通过查询其他列来对该数据帧进行子集划分(但如果存在字符串,则无法执行此操作)。99%的时间,一旦子集这个列是纯数字的,但很少字符串值会在子集中结束,我需要捕获它。 通过Pandas混合类型列循环检查字符串(或者反过来检查整个列是
问题内容: 我有一个类似于以下内容的数据框: 我希望输出为以下格式: 想要从“名称”列中删除所有数字。 我最近来的是使用以下代码在 单元 级别进行的: 任何想法如何在 系列 / 数据框 级别上以更好的方式 实现 。 问题答案: 您可以结合使用正则表达式将str.replace应用于列: 输出: 在正则表达式中代表“任何数字”,代表“一个或多个”。 因此,其含义是:“将字符串中所有出现的数字全部替换