我需要使用存储在文件中的数据创建数据框.为此,我想使用read_csv方法.但是,分隔符不是很规则.有些列由tabs(\t)分隔,其他列由空格分隔.此外,一些列可以通过2或3个或更多个空格分隔,或者甚至通过空格和标签的组合(例如3个空格,两个标签然后1个空格).
有没有办法告诉大熊猫正确对待这些文件?
顺便说一下,如果我使用Python,我就没有这个问题.我用:
for line in file(file_name):
fld = line.split()
Run Code Online (Sandbox Code Playgroud)
它完美无缺.它不关心字段之间是否有2或3个空格.即使空格和制表符的组合也不会造成任何问题.大熊猫可以这样做吗?
作为这篇文章的后续内容,我想根据索引连接多个列,但我遇到了一些问题.在这个例子中,我得到一个与map函数相关的Attribute错误.可以理解这个错误的帮助,因为代码会执行等效的列连接.
#data
df = DataFrame({'A':['a','b','c'], 'B':['d','e','f'], 'C':['concat','me','yo'], 'D':['me','too','tambien']})
#row function to concat rows with index greater than 2
def cnc(row):
temp = []
for x in range(2,(len(row))):
if row[x] != None:
temp.append(row[x])
return map(concat, temp)
#apply function per row
new = df.apply(cnc,axis=1)
#Expected Output
new
concat me
me too
yo tambien
Run Code Online (Sandbox Code Playgroud)
谢谢,zach cp
我正在尝试使用 Pandas 读取制表符分隔的 txt 文件。该文件如下所示:
14.38 14.21 0.8951 5.386 3.312 2.462 4.956 1<p>
14.69 14.49 0.8799 5.563 3.259 3.586 5.219 1<p>
14.11 14.12 0.8911 5.422 3.302 2.723 5 1<p>
Run Code Online (Sandbox Code Playgroud)
有些行有额外的标签。如果我使用 read_csv 或 read_fwf,并指定 sep='\t'。我得到的结果是这样的:
d
0 15.26\t14.84\t0.871\t5.763\t3.312\t2.221\t5.22\t1<p>
1 14.88\t14.57\t0.8811\t5.554\t3.333\t1.018\t4.9 <p>
Run Code Online (Sandbox Code Playgroud)
对于我可以指定哪些参数来处理这个问题,您有什么建议吗?谢谢。
解决方案:
使用 pd.read_csv(filename, delim_whitespace=True)