繁体   English   中英

如何在Pandas数据框中重新格式化.csv文件?

[英]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

看起来其中一列有空白字符串,可以dropdrop

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM