簡體   English   中英

將Python pandas數據幀行切片寫入文件

[英]Writing Python pandas dataframe row slices to a file

我有一個包含4列的CSV文件,第一列是case id (重復)。

========INPUT csv file=============
case_num, serial,binary,review
23,29983, 1, "lorem ipsum ,lorem ipsum"
23,298829, 1, "Hi there"
29, 20020, 0, "hickery dickery dock"
29,298829, 1, "Hello there"
29, 28220, 0, "dickery dock"

我試圖僅根據案例ID的唯一數量過濾所有行。

input=pandas.read_csv("inp.csv")
case_id=fl["case_num"]
case_id.sort
with open("out.csv","w") as fl:    
    for i in case_id.unique():
        fl.write(([input['case_num']==i].iloc[0].values)) 

輸出:

[23 '29983' 1
 'lorem ipsum ,lorem ipsum'] #<type 'numpy.ndarray'>

[29 '20220' 0
 'hickery dickery dock']     #<type 'numpy.ndarray'>

正如您所看到的那樣,輸出是以不同的行寫出來的,但我希望它們正確地作為一行,每行用逗號分隔。

=====所需的輸出=======

23, '29983', 1,  'lorem ipsum ,lorem ipsum'
29 ,'20220', 0,  'hickery dickery dock'

簡單地說,如果我從數據框中讀取了一些行(使用csv文件生成),那么如何將所選行的所選子集以相同的格式(與輸入csv文件一樣)寫入輸出csv文件。

IIUC你可以使用drop_duplicates

print df
   case id case_num no                        text
0       23  '29983'  1  'lorem ipsum ,lorem ipsum'
1       23  '29983'  1  'lorem ipsum ,lorem ipsum'
2       23  '29983'  1  'lorem ipsum ,lorem ipsum'
3       23  '29983'  1  'lorem ipsum ,lorem ipsum'
4       29  '20220'  0      'hickery dickery dock'

df = df.drop_duplicates(subset='case id')
print df
   case id case_num no                        text
0       23  '29983'  1  'lorem ipsum ,lorem ipsum'
4       29  '20220'  0      'hickery dickery dock'

通過to_csv輸出到csv:

df.to_csv(filename, sep=',', index=False)
case id,case_num,no,text
23,'29983',1,"'lorem ipsum ,lorem ipsum'"
29,'20220',0,'hickery dickery dock'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM