我有一个数据框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?
感谢您的想法!
答案 0 :(得分:1)
我认为您可以先使用unstack
,然后再沿着轴= 1 prod
进行操作
print (dftemp.unstack().prod(axis=1))
然后,如果我没记错的话,Unit
是df
中索引的名称,所以我会这么说
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