从列中获取一个元素,如果该元素等于某个元素,则将其放入python中的另一列中
假设我有这样一个数据帧:从列中获取一个元素,如果该元素等于某个元素,则将其放入python中的另一列中,python,python-3.x,pandas,list,dataframe,Python,Python 3.x,Pandas,List,Dataframe,假设我有这样一个数据帧: full_path 0 C:\Users\User\Desktop\Test1\1.txt 1 C:\Users\User\Desktop\ABC\1.txt 2 C:\Users\User\Desktop\Test2\1.txt 3 C:\Users\User\Desktop\Test1\1.txt 4 C:\Users\User\Desktop\ABCD\1.txt 5 C:
full_path
0 C:\Users\User\Desktop\Test1\1.txt
1 C:\Users\User\Desktop\ABC\1.txt
2 C:\Users\User\Desktop\Test2\1.txt
3 C:\Users\User\Desktop\Test1\1.txt
4 C:\Users\User\Desktop\ABCD\1.txt
5 C:\Users\User\Desktop\Test2\1.txt
我想检查路径的第5个元素是否等于test1和Test2,并创建如下列:
full_path folder
0 C:\Users\User\Desktop\Test1\1.txt Test1
1 C:\Users\User\Desktop\ABC\1.txt
2 C:\Users\User\Desktop\Test2\1.txt Test2
3 C:\Users\User\Desktop\Test1\1.txt Test1
4 C:\Users\User\Desktop\ABCD\1.txt
5 C:\Users\User\Desktop\Test2\1.txt Test2
我尝试了这个命令df['folder']=df[“full\u path”].str.rsplit(“\\”).str[4]
,但它给出了以下输出:
full_path folder
0 C:\Users\User\Desktop\Test1\1.txt Test1
1 C:\Users\User\Desktop\ABC\1.txt ABC
2 C:\Users\User\Desktop\Test2\1.txt Test2
3 C:\Users\User\Desktop\Test1\1.txt Test1
4 C:\Users\User\Desktop\ABCD\1.txt ABCD
5 C:\Users\User\Desktop\Test2\1.txt Test2
我不希望在文件夹列中显示不是Test1和Test2的文件夹您可以在以下位置使用Numpy:
import numpy as np
df['folder'] = np.where(df['full_path'].str.contains('Test'),
df['full_path'].str.rsplit('\\').str[4],
np.nan
)
输出:
full_path folder
0 C:\Users\User\Desktop\Test1\1.txt Test1
1 C:\Users\User\Desktop\ABC\1.txt NaN
2 C:\Users\User\Desktop\Test2\1.txt Test2
3 C:\Users\User\Desktop\Test1\1.txt Test1
4 C:\Users\User\Desktop\ABCD\1.txt NaN
5 C:\Users\User\Desktop\Test2\1.txt Test2