将Python pandas数据框的行切片写入文件

3

我有一个带有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"

我正在尝试根据唯一案件编号的数量筛选所有行。
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文件中。

请展示您期望的输出,不清楚您想要什么。 - EdChum
1
@EdChum,请检查,我已经添加了所需的输出。基本上,如何从数据框中选择一行(从CSV文件填充),并将输出写入与输入文件完全相同的方式。 - user4069366
你能否添加一份输入文件的样本? - jezrael
1
@jezrael 添加了输入样本文件。 - user4069366
1个回答

3

如果我理解正确,您可以使用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'

1
但我想将“print df”的输出写入CSV文件中(每列由“,”分隔,并尽可能包含列名)。 - user4069366

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接