2024-04-30 00:38:50 发布
网友
我的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)))
但我得到了错误
我做错什么了?我怎么做对?在
既然我的问题被投了赞成票,我想,这对一些人来说还是很有趣的。到目前为止,我已经学了很多Python,让我来回答一下,也许它会对其他用户有所帮助。在
首先,让我们导入所需的包
import pandas as pd from dfply import * from os.path import basename, dirname, join
并生成所需的pandas数据帧
是什么
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的每个元素。 所有的东西都在一起我们最终得到了密码
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的情况下,我们可以选择编写
mutate
resultstatsDF['dirfile'] = resultstatsDF.file.apply(extract_last_dir_plus_filename)
既然我的问题被投了赞成票,我想,这对一些人来说还是很有趣的。到目前为止,我已经学了很多Python,让我来回答一下,也许它会对其他用户有所帮助。在
首先,让我们导入所需的包
并生成所需的pandas数据帧
^{pr2}$是什么
我们发现仍然有一个错误(尽管由于dfply的不断开发,它已经发生了变化):
原因是,因为mutate可以处理序列,但是我们需要一个处理元素的函数。在这里我们可以使用pandas的函数pandas.Series.apply,它在系列中工作。 但是,我们还需要一个自定义函数,可以应用于序列
file
的每个元素。 所有的东西都在一起我们最终得到了密码哪些输出
在没有dfply的
mutate
的情况下,我们可以选择编写相关问题 更多 >
编程相关推荐