循环时行未追加到数据框

时间:2019-06-05 23:21:22

标签: python pandas dataframe

我正在研究数据库并创建选定信息的数据框。该数据库位于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]

我希望在pandas数据框中更新此数据,但是该数据未追加到该数据框中。谁能告诉我原因以及解决方案吗?

编辑:我要添加一部分items [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}}}

1 个答案:

答案 0 :(得分:1)

Hei

没有适当地添加到数据框。 append函数只会返回包含附加值的新数据框,而不会修改原始数据框

所以

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

应该是

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