Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从列中提取数字,并将其作为数据帧中的整数范围放在空列中_Python 3.x_Pandas_Dataframe_For Loop - Fatal编程技术网

Python 3.x 从列中提取数字,并将其作为数据帧中的整数范围放在空列中

Python 3.x 从列中提取数字,并将其作为数据帧中的整数范围放在空列中,python-3.x,pandas,dataframe,for-loop,Python 3.x,Pandas,Dataframe,For Loop,我试图迭代数据帧中的一列(“winning_numbers”),然后使用for循环逐行将第一个和最后一个数字作为空列(“win_num_range”)中的整数范围。我肯定以前有人问过这个问题,但考虑到涉及的语法和方法,我找不到一个有效的答案 import pandas as pd # Define a dictionary containing employee data data = {'winning_numbers':['12, 15, 36, 46, 55', '3, 10,

我试图迭代数据帧中的一列(“winning_numbers”),然后使用for循环逐行将第一个和最后一个数字作为空列(“win_num_range”)中的整数范围。我肯定以前有人问过这个问题,但考虑到涉及的语法和方法,我找不到一个有效的答案

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(',')))))
如果您需要as范围:

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列中的值


此方法允许您使用最小值和最大值以所需格式提供信息。

不需要查找int,因此我可以将其简化为机器学习,但感谢您的建议,它帮助我缩小了Vision的范围。我已更新了我的答案,请检查它是否解决了您的问题。