[英]How to reformat a .csv file with in pandas dataframe?
只是一个简单的问题,使用pandas to_csv()
函数,我将熊猫数据to_csv()
保存为.csv文件,其结构如下:
在:
df.to_csv(output_file, sep = '|')
出:
|id|column2|column3
0|id_1|bla bla bla bla|more strings
1|id_2|bla bla bla bla|more strings
2|id_3|bla bla bla bla|more strings
....
n-1|id_n|bla bla bla bla| more strings
前一个文件的问题是格式,如您所见,.csv文件的左侧有一个错误的列:
|id|
0|
1|
2|
....
n-1|
从一开始,我尝试通过执行以下操作来删除实际上没有名称的列:
df.drop('',axis=1)
print list(df.columns.values)
['id', 'column2', 'column3]
但是,它没有用。 如何使用to_csv()
函数将先前的.csv文件重组为类似的格式?
id|column2|column3
id_1|bla bla bla bla|more strings
id_2|bla bla bla bla|more strings
id_3|bla bla bla bla|more strings
....
id_n|bla bla bla bla|more strings
更新
使用@piRSquared的答案,我尝试重新格式化csv文件,如下所示:
print list(df.columns.values)
return df.to_csv(output_file, sep='|', index_col=1)[['column1','column2', 'column3']]
#return df.to_csv(output_file, sep = '|')
不过,我得到了这个:
['id', 'content', 'POS-tagged_content']
Traceback (most recent call last):
File "script.py", line 48, in <module>
preprocess_files(input_file, output_file)
File "script.py", line 39, in postag_pandas
return df.to_csv(output_file, sep='|', index_col=1)[['column1','column2', 'column3']]
TypeError: 'NoneType' object has no attribute '__getitem__'
尝试:
df.set_index('id')
df
是您的数据框
联合会
您提供的是来自csv文件的文本,并且您正在将其导入pandas数据框。 当您说:
如何将以前的数据框重组为类似的格式?:
我相信您已经混淆了什么是数据框和什么是csv。
csv it文本或包含要分析的文本的文件。 通常,此文本用逗号分隔。 (C OMMA 小号 eparated V alues)
pandas / python上下文中的数据框是python对象。
话虽如此,我相信你想问的是:
如何导入带有此文本的csv,这样我就不会得到第一列。
text = """|id|column2|column3
0|id_1|bla bla bla bla|more strings
1|id_2|bla bla bla bla|more strings
2|id_3|bla bla bla bla|more strings
n-1|id_n|bla bla bla bla| more strings"""
df = pd.read_csv(StringIO(text), sep='|', index_col=1)[['column2', 'column3']]
print df
看起来像:
column2 column3
id
id_1 bla bla bla bla more strings
id_2 bla bla bla bla more strings
id_3 bla bla bla bla more strings
id_n bla bla bla bla more strings
从这里您可以保存到csv中,如下所示:
df.to_csv('./mycsv.csv')
产生
id,column2,column3
id_1,bla bla bla bla,more strings
id_2,bla bla bla bla,more strings
id_3,bla bla bla bla,more strings
id_n,bla bla bla bla, more strings
你说的是你想要的。
print df.to_string(index=False)
这将打印不带索引的数据框。
>>> print df
id column2 column3
0 id_1 bla bla bla bla more strings
1 id_2 bla bla bla bla more strings
2 id_3 bla bla bla bla more strings
>>> print df.to_string(index=False)
id column2 column3
id_1 bla bla bla bla more strings
id_2 bla bla bla bla more strings
id_3 bla bla bla bla more strings
In [47]:
df = pd.DataFrame(np.random.randn(5,2), columns=['','asd'])
df
Out[47]:
asd
0 -0.911575 -0.142538
1 0.746839 -1.504157
2 0.611362 0.400219
3 -0.959443 1.494226
4 -0.346508 -1.471558
In [48]:
df.drop('',axis=1)
Out[48]:
asd
0 -0.142538
1 -1.504157
2 0.400219
3 1.494226
4 -1.471558
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.