私の質問が投票されたので、一部の人にとってはまだ興味深いと思います。これまでのところPythonでかなりのことを学んだことがあれば、私はそれに答えることができます。多分、それは他のユーザに役立つでしょう。
まず、私たちは私たちはまだエラーを取得していることがわかり
file
0 /home/user/this/file1.png
1 /home/user/that/file2.png
あるDATAFRAME
resultstatsDF = pd.DataFrame({'file': ['/home/user/this/file1.png', '/home/user/that/file2.png']})
を(必要なパッケージに
import pandas as pd
from dfply import *
from os.path import basename, dirname, join
をインポートし、必要なパンダを作ってみよう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
。 すべては私たちがdfplyのmutate
せずにこれを行う
index file dirfile
0 0 /home/user/this/file1.png this/file1.png
1 1 /home/user/that/file2.png that/file2.png
出力コード
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))
で終わる一緒に入れ、我々は、代わりに
resultstatsDF['dirfile'] = resultstatsDF.file.apply(extract_last_dir_plus_filename)
を書くことができ