簡體   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