python - 将 Python pandas 数据帧行切片写入文件

标签 python csv pandas dataframe

我有一个包含 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'

关于python - 将 Python pandas 数据帧行切片写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34332863/

相关文章:

python - 为什么我不能在 pyttsx3 中改变声音?

python - 如何排序我的数据以在 Bokeh 中制作热图?

python - django datetime.datetime 错误

python - Pygtk 选项卡中的 TreeView

python - 从python中的字符串中提取罗马数字

python - 如何使用 Pandas 读取 UTF-8 文件?

c# - 如何处理 CSV 文件中的引号?

csv - 如何使用 PHPUnit 断言路由输出 CSV

python - 在迭代过程中修改数据帧不一致的行为

python - 如何扫描 pandas 行中的第一个非零值并使用数字创建新列