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