如何访问数据框上的extractall的结果

时间:2019-01-02 23:53:01

标签: pandas

我有一个数据框df,其中列df.Type具有有关物理对象的尺寸信息。数字出现在文本字符串中,我已使用以下代码成功提取了该文本字符串:

dftemp=df.Type.str.extractall("([-+]?\d*\.\d+|\d+)").astype(float)

但是现在,问题在于结果显示为:

0
Unit    match   
5       0   0.02
        1   0.03
6       0   0.02
        1   0.02
7       0   0.02

...

如何将这些连续的数字相乘(例如0.02 * 0.03 = 0.006),并将结果作为新列插入原始数据帧df中,例如,将df.Type的每个值都设为df.Area?

感谢您的想法!

1 个答案:

答案 0 :(得分:1)

我认为您可以先使用unstack,然后再沿着轴= 1 prod进行操作

print (dftemp.unstack().prod(axis=1))

然后,如果我没记错的话,Unitdf中索引的名称,所以我会这么说

df['Area'] = dftemp.unstack().prod(axis=1) 

应创建您要查找的列。

举个例子:

df = pd.DataFrame( {'Type':['bla 0.03 dddd 0.02 jjk','bli 0.02 kjhg 0.02 wait']},
                   index=pd.Index([5,6],name = 'Unit'))

df['Area'] = (df.Type.str.extractall("([-+]?\d*\.\d+|\d+)").astype(float)
                .unstack().prod(axis=1))

print (df)
                         Type    Area
Unit                                    
5      bla 0.03 dddd 0.02 jjk  0.0006
6     bli 0.02 kjhg 0.02 wait  0.0004