2017-02-22 83 views
0

我想比较两个.csv文件。第一个有许多属性被故意分成不同的列。第二个csv将所有这些属性合并到一个单元中。我想找到一定数量的匹配,并且一旦确认,就从第二个csv中的另一个单元(图像ID)获取数据。熊猫匹配使用.extract()

我正在使用熊猫(新的它),到目前为止认为提取/ extractall是我想成为的地方。但在这个基本的测试中,我看不出为什么我没有得到任何比赛。

image_index = pd.Series(['Classic', 'Duffle', 'Bag', 'Leather']) 
image_index.str.extract('(?P<duffle>(?i)Duffle)(?P<bag>(?i)Bag)', expand=False) 

结果:

duffle bag 
0 NaN NaN 
1 NaN NaN 
2 NaN NaN 
3 NaN NaN 

回答

0

您需要的群体之间的交替|,因为你只有每个小组模式在一个字符串:

>>> image_index.str.extract('(?P<duffle>(?i)Duffle)|(?P<bag>(?i)Bag)', expand=False) 
    duffle bag 
0  NaN NaN 
1 Duffle NaN 
2  NaN Bag 
3  NaN NaN 
+0

这是为什么没有在给出的例子需要在文档中?我没有看到他们的。 http://pandas.pydata.org/pandas-docs/stable/text.html – thaneofcawdor

+0

在文档中的示例中,字符串具有来自两个组的匹配,但这不是这种情况。如果你在系列中有“DuffleBag”,那么你的第一个正则表达式会找到一个匹配。 –