微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Pandas 迭代值列表并写入单独的文本文件

如何解决Python Pandas 迭代值列表并写入单独的文本文件

我正在使用如下所示的 CSV 数据集:

                  img_id                 obj_id   xcen        ycen       width       height
0   94a69b66-23f0-11e9-a78e-2f2b7983ac0d    0   0.377734    0.091667    0.071094    0.183333
1   94a6a3a4-23f0-11e9-a78f-ebd9c88ef3e8    0   0.375781    0.090972    0.075000    0.181944
2   94a6a430-23f0-11e9-a790-2b5f72f1667a    0   0.378516    0.091667    0.069531    0.183333
3   94a6a48a-23f0-11e9-a791-fb958b6ab6b3    0   0.391406    0.106944    0.076563    0.213889
4   94a6a4da-23f0-11e9-a792-f320b734bd9b    0   0.395313    0.106250    0.068750    0.212500
5   94a6a534-23f0-11e9-a793-c7e8fecc9fa8    0   0.362109    0.127778    0.105469    0.225000

我想要做的是将每一行写入一个单独的文本文件,每一列值在一行上用逗号分隔。

我只是将 img_id 从写入文本文件删除,因为我使用 img_id 来命名单个文本文件

我一直在尝试不同的方法,但在将每一行写入其各自的文本文件时遇到了问题。我已经成功地让每个单独的文本文件以其 img_id 命名。

一个例子是第一个 img_id 文本文件将包含这样的内容

0,0.377734,0.091667,0.071094,0.183333

目前,我正在尝试对一列进行迭代,而不是将每一行都放入相应的文本文件中,而是将使用 .values() 方法获得的整个列表放入每个文本文件中,如下所示

[0,0.......0,0]

还有一些 img_ids 是相同的,所以我想防止在我的代码创建它时用另一个同名的 txt 文件覆盖一个 txt 文件,如果有多个 img_id 然后而不是创建另一个文本文件和(我假设)用相同的 img_id 覆盖先前的文本文件,它将该行添加到文本文件中,因此现在有 2 行如下:

94a6a54-23f0-11e9-a793-c7e8fecc9fa8.txt的内容

0,0.362109,0.127778,0.105469,0.225000
0,0.175781,0.283642,0.210913,0.293922

这是我目前正在使用的代码

file = '{}.txt'
a = df['img_id'].values
b = df['object_class'].values
c = df['xcen'].values
d = df['ycen'].values
e = df['width'].values
f = df['height'].values
b = str(b)
c = str(c)
d = str(d)
e = str(e)
f = str(f)
for x in a:
    with open(file.format(x),'w') as f:
        for i in b:
            f.write(i)

解决方法

示例数据:

>>> df
                                  img_id  object_class      xcen      ycen     width    height
0   b192cbd4-7958-4a82-8f90-42217076a66c             4  0.211284  0.428579  0.287383  0.683370
1   b192cbd4-7958-4a82-8f90-42217076a66c             2  0.840717  0.040433  0.192738  0.545159
2   9d452f25-aa60-4fe1-9165-a1a8a981a372             2  0.840717  0.040433  0.192738  0.545159
3   3fa5d0d9-c781-40ad-a8f5-a1eae7d51b98             9  0.741793  0.098438  0.707242  0.102758
4   706ad967-11a6-4e6f-85bc-24bc204597f4             4  0.786071  0.735364  0.661866  0.453724
5   1b577e42-d037-4f7b-918e-1c7e6cc7e7a1            17  0.513458  0.012236  0.856802  0.894129
6   c4c16c64-30cd-450b-ab08-543c4818f1f3            13  0.625725  0.765523  0.007714  0.678993
7   329b908e-ce41-4fd1-b671-b20909c3b31d            10  0.784206  0.831250  0.728761  0.809600
8   fd83b03c-2a84-4cb3-834d-714167475104             7  0.508803  0.137691  0.290492  0.206802
9   6ce64fd0-ca9b-47e8-ae1d-049a87468197            13  0.919442  0.168500  0.995826  0.250895
10  66ddffca-fdea-444f-ae79-d4ee284b9385            12  0.920211  0.803805  0.360863  0.866571

导出文件:

for filename,data in df.groupby("img_id"):
    data.drop(columns="img_id").to_csv(f"{filename}.txt",header=None,index=None)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。