循环时未附加到数据帧的行

2024-06-11 08:19:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个数据库,并创建一个选定信息的数据框。数据库可以在www.cricsheet.org找到。 其代码为:

bat = {'Name' : [], 'Runs' : [], 'Balls' : [], 'StrikeR' : []}
batsman = pd.DataFrame(bat)
batsman.head()
index = ['Name','Runs','Balls','StrikeR']

data = []
count = 0
for i in items[0]["1st innings"]["deliveries"]:
    name = list(i.values())[0]["batsman"]
    run = list(i.values())[0]["runs"]["batsman"]
    if name in list(batsman['Name']):
        batsman.loc[batsman.Name == name].Runs += run
        batsman.loc[batsman.Name == name].Balls += 1
        batsman.loc[batsman.Name == name].StrikeR = batsman.loc[batsman.Name == name].Runs/batsman.loc[batsman.Name == name].Balls
    else:
        data = [name,run,1,run]
        print(b)
        batsman.append(pd.Series(data, index = index), ignore_index=True)

要给出上下文,数组data的类型为:

['GC Smith', 0, 1, 0]
['HH Dippenaar', 0, 1, 0]
['HH Dippenaar', 0, 1, 0]
['HH Dippenaar', 2, 1, 2]
['HH Dippenaar', 0, 1, 0]

我希望在一个数据帧中更新这个数据,但是数据没有附加到数据帧。有人能告诉我为什么吗?解决办法是什么

编辑:我正在添加项[0]数据集的一部分

{'1st innings': {'team': 'South Africa', 'deliveries': [{0.1: {'batsman': 'GC Smith', 'bowler': 'WPUJC Vaas', 'non_striker': 'HH Dippenaar', 'runs': {'batsman': 0, 'extras': 0, 'total': 0}}}, {0.2: {'batsman': 'GC Smith', 'bowler': 'WPUJC Vaas', 'non_striker': 'HH Dippenaar', 'runs': {'batsman': 0, 'extras': 0, 'total': 0}}}, {0.3: {'batsman': 'GC Smith', 'bowler': 'WPUJC Vaas', 'non_striker': 'HH Dippenaar', 'runs': {'batsman': 0, 'extras': 0, 'total': 0}}}, {0.4: {'batsman': 'GC Smith', 'bowler': 'WPUJC Vaas', 'non_striker': 'HH Dippenaar', 'runs': {'batsman': 0, 'extras': 0, 'total': 0}}}, {0.5: {'batsman': 'GC Smith', 'bowler': 'WPUJC Vaas', 'non_striker': 'HH Dippenaar', 'runs': {'batsman': 0, 'extras': 0, 'total': 0}}}, {0.6: {'batsman': 'GC Smith', 'bowler': 'WPUJC Vaas', 'non_striker': 'HH Dippenaar', 'runs': {'batsman': 0, 'extras': 0, 'total': 0}}}

Tags: 数据nameextrashhrunsgcsmithnon
1条回答
网友
1楼 · 发布于 2024-06-11 08:19:34

附加到数据帧的操作不到位。append函数只返回包含附加值的新数据帧,不会修改原始数据帧

所以

batsman.append(pd.Series(data, index = index), ignore_index=True)

应该是

batsman = batsman.append(pd.Series(data, index = index), ignore_index=True)

相关问题 更多 >