首页 > 解决方案 > Python:创建一个从数据集中提取一系列行的函数

问题描述

我想创建一个从数据集(.csv)中提取一系列行(n:m)的函数。它应该忽略第一行,也应该将“Number Minutes”列转换为整数。

我们的数据集(“file_name.csv”)如下所示:

Name;Age;Team;Number Minutes
Henry Dalton;19;Chelsea FC;1.200
John Smith;50;Manchester Utd.;4.000
Herman Lock;32;Manchester City;2.400
Kyle Hard;23;Everton Football Club;1.200

该函数如下所示:

 find_player("file_name.csv", 2, 3)

结果将是:

['John Smith' , '50' , 'Manchester Utd.' '4000']
['Herman Lock' , '32' , 'Manchester City' , '2400']

我选择使用熊猫。到目前为止,我已经制作了这段代码:

import pandas as pd
file_route = r'.\file_name.csv'

def find_player(file_route, n, m):
    data = pd.read.csv(file_route)
    data2 = data[n, m].copy()
    data2[3] = data2[3].astype(int)
    print(data2)
    return(data2)

我无法得到正确的解决方案,所以我可以使用一些帮助。

谢谢!

标签: pythonpandas

解决方案


def find_player(filename,start,end):
    with open(filename, 'r') as msg:
        data = msg.read().splitlines() 
    return [[int(s.replace(".","")) if s.replace(".","").isdigit() else s for s in item.split(";")] for item in data[start:end+1]]

print (find_player("file_name.csv", 2, 3))

输出:

[['John Smith', 50, 'Manchester Utd.', 4000], ['Herman Lock', 32, 'Manchester City', 2400]]

请注意,您实际上无法获得示例中所示的两个列表。要么你得到一个列表列表,要么你在每行你想捕捉的地方运行一次你的函数。


推荐阅读