dfply:变异字符串列:TypeE

2024-04-30 00:38:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我的pandas dataframe包含一列“file”,它是带有文件路径的字符串。我试图用dfply来改变这个专栏

resultstatsDF.reset_index() >> mutate(dirfile = os.path.join(os.path.basename(os.path.dirname(X.file)),os.path.basename(X.file)))

但我得到了错误

^{pr2}$

我做错什么了?我怎么做对?在


Tags: 文件path字符串路径dataframepandasindexos
1条回答
网友
1楼 · 发布于 2024-04-30 00:38:50

既然我的问题被投了赞成票,我想,这对一些人来说还是很有趣的。到目前为止,我已经学了很多Python,让我来回答一下,也许它会对其他用户有所帮助。在

首先,让我们导入所需的包

import pandas as pd
from dfply import *
from os.path import basename, dirname, join

并生成所需的pandas数据帧

^{pr2}$

是什么

                        file
0  /home/user/this/file1.png
1  /home/user/that/file2.png

我们发现仍然有一个错误(尽管由于dfply的不断开发,它已经发生了变化):

resultstatsDF.reset_index() >> \
mutate(dirfile = join(basename(dirname(X.file)), basename(X.file)))

TypeError: index returned non-int (type Intention)

原因是,因为mutate可以处理序列,但是我们需要一个处理元素的函数。在这里我们可以使用pandas的函数pandas.Series.apply,它在系列中工作。 但是,我们还需要一个自定义函数,可以应用于序列file的每个元素。 所有的东西都在一起我们最终得到了密码

def extract_last_dir_plus_filename(series_element):
    return join(basename(dirname(series_element)), basename(series_element))

resultstatsDF.reset_index() >> \
mutate(dirfile = X.file.apply(extract_last_dir_plus_filename))

哪些输出

   index                       file         dirfile
0      0  /home/user/this/file1.png  this/file1.png
1      1  /home/user/that/file2.png  that/file2.png

在没有dfply的mutate的情况下,我们可以选择编写

resultstatsDF['dirfile'] = resultstatsDF.file.apply(extract_last_dir_plus_filename)

相关问题 更多 >