Если вы хотите, чтобы итоги отображались в новом DataFrame, вам нужно будет добавлять новую строку для каждого раза вокруг l oop:
import pandas
data = pandas.read_csv(r"WHO-COVID-19-global-data.csv", skipinitialspace=True)
countrylist = data.Country.unique()
out_columns = ['Country', 'Total_cases', 'Total_deaths']
out_data = pandas.DataFrame(columns=out_columns)
for c in countrylist:
country = data[data.Country == c]
case_total = country['New_cases'].sum()
deaths_total = country['New_deaths'].sum()
out_data = out_data.append(pandas.DataFrame([[c, case_total, deaths_total]], columns=out_columns))
print(out_data)
Gives:
Country Total_cases Total_deaths
0 Afghanistan 34451 1010
0 Albania 3571 95
0 Algeria 19195 1011
0 Andorra 855 52
0 Angola 506 26
.. ... ... ...
0 Venezuela (Bolivarian Republic of) 9178 85
0 Viet Nam 372 0
0 Yemen 1469 418
0 Zambia 1895 42
0 Zimbabwe 985 18
[216 rows x 3 columns]
Но если вам действительно нужна переменная Python для каждой страны, вы можете использовать словарь locals()
:
import pandas
data = pandas.read_csv(r"WHO-COVID-19-global-data.csv", skipinitialspace=True)
countrylist = data.Country.unique()
for c in countrylist:
country = data[data.Country == c]
case_total = country['New_cases'].sum()
locals()['%s_total' % (c.lower())] = case_total
print("Australia: %s" % australia_total)
print("Germany: %s" % germany_total)
Однако я бы не рекомендовал использовать locals()
для установки новых переменные, поскольку для тех, кто читает код, не очевидно, что новые имена переменных создаются без использования традиционного оператора присваивания foo = 123
.