在pandas中将数据框保存为csv/text文件时不需要行编号。

4

我使用pandas从文本文件中创建了一个数据框。

df = pd.read_table('inputfile.txt',names=['Line'])

当我执行df命令时。
Line
0   17/08/31 13:24:48 INFO spark.SparkContext: Run...
1   17/08/31 13:24:49 INFO spark.SecurityManager: ...
2   17/08/31 13:24:49 INFO spark.SecurityManager: ...
3   17/08/31 13:24:49 INFO spark.SecurityManager: ...
4   17/08/31 13:24:49 INFO util.Utils: Successfull...
5   17/08/31 13:24:49 INFO slf4j.Slf4jLogger: Slf4...
6   17/08/31 13:24:49 INFO Remoting: Starting remo...
7   17/08/31 13:24:50 INFO Remoting: Remoting star...
8   17/08/31 13:24:50 INFO Remoting: Remoting now ...
9   17/08/31 13:24:50 INFO util.Utils: Successfull...   

现在我想将这个文件保存为csv格式。

df.to_csv('outputfile')

我得到的结果是这样的。
0,17/08/31 13:24:48 INFO spark.SparkContext: Running Spark version 1.6.0
1,17/08/31 13:24:49 INFO spark.SecurityManager: Changing view acls to: user1
2,17/08/31 13:24:49 INFO spark.SecurityManager: Changing modify acls to: user1
3,17/08/31 13:24:49 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(user1);
4,17/08/31 13:24:49 INFO util.Utils: Successfully started service 'sparkDriver' on port 17101.
5,17/08/31 13:24:49 INFO slf4j.Slf4jLogger: Slf4jLogger started
6,17/08/31 13:24:49 INFO Remoting: Starting remoting
7,17/08/31 13:24:50 INFO Remoting: Remoting started; listening on addresses :
8,17/08/31 13:24:50 INFO Remoting: Remoting now listens on addresses: 
9,17/08/31 13:24:50 INFO util.Utils: Successfully started service 'sparkDriverActorSystem' on port 100033.

我希望我的输出是:
17/08/31 13:24:48 INFO spark.SparkContext: Running Spark version 1.6.0
17/08/31 13:24:49 INFO spark.SecurityManager: Changing view acls to: user1
17/08/31 13:24:49 INFO spark.SecurityManager: Changing modify acls to: user1
17/08/31 13:24:49 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(user1);
17/08/31 13:24:49 INFO util.Utils: Successfully started service 'sparkDriver' on port 17101.
17/08/31 13:24:49 INFO slf4j.Slf4jLogger: Slf4jLogger started
17/08/31 13:24:49 INFO Remoting: Starting remoting
17/08/31 13:24:50 INFO Remoting: Remoting started; listening on addresses :
17/08/31 13:24:50 INFO Remoting: Remoting now listens on addresses: 
17/08/31 13:24:50 INFO util.Utils: Successfully started service 'sparkDriverActorSystem' on port 100033.

我尝试了以下几种方法,但仍然得不到我想要的输出结果。

np.savetxt(r'np.txt', df.Line, fmt='%d')

df.to_csv(sep=' ', index=False, header=False)

df.columns 是什么意思? - James
@james 它给出了行。 - User12345
3个回答

7
James的答案很可能是正确的,考虑到特殊情况。 然而,pandas的标准行为是将行号作为一列放在前面,没有标题。 要去除这个行号列,只需将index=参数设置为None
df.to_csv("outfile.csv", index=False)

(编辑:根据@Haagimus正确指出的,进行了更正,以免误导任何人。)

3

克里斯蒂安几乎正确。如果您查看to_csv 命令的文档。

根据文档

index : boolean, default True, 写入行名称(索引)

我强烈推荐使用助手工具Kite来帮助处理此类简单事项。

df.to_csv('outfile.csv', index=False)

1

看起来数字可能是在Line列中的字符串的一部分。您可以用空白替换前导数字和空格,并将其输出到没有索引的文件中:

df.Line.str.replace('^\d+ +','').to_csv('outputfile.csv', index=False, header=False)

我仍然在每行前面得到编号。 - User12345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接