我有一个 DataFrame (我将其称为test),其中有一列包含文件路径,我想使用部分路径来过滤数据。
full_path
0 C:\data\Data Files\BER\figure1.png
1 C:\data\Data Files\BER\figure2.png
2 C:\data\Previous\Error\summary.png
3 C:\data\Data Files\Val\1x2.png
4 C:\data\Data Files\Val\2x2.png
5 C:\data\Microscopy\defect.png
Run Code Online (Sandbox Code Playgroud)
查找的部分路径是:
ex = 'C:\\data\\Microscopy'
Run Code Online (Sandbox Code Playgroud)
我已经尝试过了str.contains,但是,
test.full_path.str.contains(ex)
0 False
1 False
2 False
3 False
4 False
5 False
Run Code Online (Sandbox Code Playgroud)
我预计True索引 5 的值为 5。起初我认为问题可能在于路径字符串由于与转义字符的差异而实际上不匹配,但是:
ex in test.full_path.iloc[5]
Run Code Online (Sandbox Code Playgroud)
等于True。经过一番挖掘,我认为参数应该str.contains是正则表达式,所以也许部分路径中的“\”把事情搞砸了?
我也尝试过:
test.full_path.apply(lambda x: ex in x)
Run Code Online (Sandbox Code Playgroud)
但这给出了NameError: name 'ex' is not defined. 这些数据帧中可能有很多行,所以我还担心该apply函数可能不是很有效。
关于如何在 DataFrame 列中搜索精确的部分字符串匹配有什么建议吗?
谢谢!
我试图将自己从 JMP 中解放出来进行数据分析,但无法确定与 JMP 的拆分列函数等效的 Pandas 。我从以下 DataFrame 开始:
In [1]: df = pd.DataFrame({'Level0': [0,0,0,0,0,0,1,1,1,1,1,1], 'Level1': [0,1,0,1,0,1,0,1,0,1,0,1], 'Vals': [1,3,2,4,1,6,7,5,3,3,2,8]})
In [2]: df
Out[2]:
Level0 Level1 Vals
0 0 0 1
1 0 1 3
2 0 0 2
3 0 1 4
4 0 0 1
5 0 1 6
6 1 0 7
7 1 1 5
8 1 0 3
9 1 1 3
10 1 0 2
11 1 1 8
Run Code Online (Sandbox Code Playgroud)
我可以使用该pivot_table函数处理 JMP …