Python 如何从数据帧中的字符串中提取数字,并将这些数字的倍数添加到同一数据帧的新列中
以下是我如何从维度中提取数值并将其相乘以返回体积的示例:Python 如何从数据帧中的字符串中提取数字,并将这些数字的倍数添加到同一数据帧的新列中,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,以下是我如何从维度中提取数值并将其相乘以返回体积的示例: import pandas as pd # create a dict d = {'model': ['merc','ford'], 'dimensions': ['4.31 m x 2 m x 3.222 m', '2 m']} # create data frame from dict df = pd.DataFrame(data=d) # this extracts all instances of numbers but c
import pandas as pd
# create a dict
d = {'model': ['merc','ford'], 'dimensions': ['4.31 m x 2 m x 3.222 m', '2 m']}
# create data frame from dict
df = pd.DataFrame(data=d)
# this extracts all instances of numbers but creates a new data frame with each num in new row
x = df['dimensions'].str.extractall(r'(\d*\.?\d+)')
# converts all numeric strings to float
x[0] = x[0].astype(float)
#multiplies the dimensions of the van
y = x.loc[0].prod(axis=0)
print(y)
下面是我尝试的函数,它重复上面代码中的示例,但将其返回到数据框中的新列
def my_function(col,row):
out = 0
if col.str.extractall(r'(\d*\.?\d+)') == True:
out = col.str.extractall(r'(\d*\.?\d+)')
col[0] = col[0].astype(float)
z = col.loc[row].prod(axis=0)
return z
# logic to create new column based on function and existing data.
df['volume'] = df.apply(lambda x: my_function(df['dimensions'], df.index)
有人能帮我把这个卷数据作为一个新列返回到原始数据框中吗。IIUC,你想试试:
df['volume'] = df['dimensions'].str.extractall(r'(\d*\.?\d+)').astype(float).unstack().prod(axis=1)
输出:
model dimensions volume
0 merc 4.31 m x 2 m x 3.222 m 27.77364
1 ford 2 m 2.00000
IIUC,你想试试:
df['volume'] = df['dimensions'].str.extractall(r'(\d*\.?\d+)').astype(float).unstack().prod(axis=1)
输出:
model dimensions volume
0 merc 4.31 m x 2 m x 3.222 m 27.77364
1 ford 2 m 2.00000
你如何计算第二辆车的体积?它只添加了一个维度(2m),因为有时数据类型是完整的。这只是为了帮助正则表达式部分的推理。与项目整体相关,但与具体问题无关,斯科特·波士顿(Scott Boston)现在已经出色地回答了这个问题。您如何计算第二辆车的体积?它只添加了一个维度(2m),因为有时数据类型是完整的。这只是为了帮助正则表达式部分的推理。与项目整体相关,但与具体问题无关,斯科特·波士顿(Scott Boston)现在已经很好地回答了这个问题。非常感谢你。不幸的是,由于我的noob水平,我无法提高投票率,但非常感谢。@DavidO'Donovan如果这个解决方案对你有帮助,你可以选择它。就这样。非常感谢你。不幸的是,由于我的noob水平,我无法提高投票率,但非常感谢您。@DavidO'Donovan如果这个解决方案对您有帮助,您可以使用它。