从列中提取数字,并将它们作为数据帧panda中的int范围放在空列中



我正在尝试对数据帧中的一列('winning_numbers'(进行迭代,然后使用for循环逐行将第一位和最后一位数字作为空列('win_num_range'(中的int范围。我确信以前有人问过这个问题,但考虑到所涉及的语法和方法,我找不到有效的答案。

import pandas as pd 

# Define a dictionary containing employee data 
data = {'winning_numbers':['12, 15, 36, 46, 55', '3, 10, 56, 67, 69'], 
#this is ideally what I want the OUTPUT to be below
'win_num_range':[(12, 55), (3, 69)]} 

# Convert the dictionary into DataFrame  
df = pd.DataFrame(data) 
# been trying it this way, but I am sure there are any numbers of ways, so please help kindly I am kinda new
for ind, row in df.iterrows():
df.loc[ind, 'win_num_range'] = lambda x : range(x[0],x[4]),df.loc['winning_numbers'].values```

您可以尝试此解决方案:

如果你真的想要字符串格式的范围信息:

df['win_num_range'] = df['winning_numbers'].apply(lambda x: 'range(' + str(min(map(int,x.split(',')))) + ', ' + str(max(map(int,x.split(',')))) + ')')

如果您需要作为元组,那么您应该这样做:

df['win_num_range'] = df['winning_numbers'].apply(lambda x: (min(map(int,x.split(','))), max(map(int,x.split(',')))))

如果你需要范围:

df['win_num_range'] = df['winning_numbers'].apply(lambda x: range(min(map(int,x.split(','))), max(map(int,x.split(',')))))

使用apply和lambda函数计算每一行。

split(','(创建一个列表,其中包含winning_numbers列中的值。

这种方法允许您使用最小值和最大值以您想要的格式传递信息。

最新更新