无法将一个系列的数据附加到 pandas 中的其他系列

Can't append data from one series to other series in pandas

我正在尝试查找用于 Covid-19 的疫苗类型。我有一个不同国家/地区使用的不同疫苗的数据库,而不是数字,只是它们的类型。下面的列示例。

许多国家/地区都在使用多种疫苗。所以我想把它们分开,放在一个系列中,然后找出所有唯一的数量。

typesofvaccine = vaccinations_df.vaccines.str.split(',',expand=True)
print(typesofvaccine)

然后我创建了一个系列,我想在循环的帮助下追加其他系列。

Vaccine_one = pd.Series(dtype=object)

for v in typesofvaccine.iteritems():
  Vaccine_one.append(typesofvaccine[v].values)

print(Vaccine_one)
print(Vaccine_one.unique())

我遇到这个关键错误。

您在新的 df 中遇到一个关键错误,因为您定义的元素是字符串,例如“Johnson&Jhonson”,但列名是整数,因此当您将 v 传递给 typesofvaccine[v] 时,v 是一个字符串, 它应该是一个数字。

总的来说,如果您的目标是找到所有国家/地区的独特疫苗的数量,那么使用这种方法会使您的喜欢变得更加困难。你可以做的是这样的:

import pandas as pd
vaccines = pd.DataFrame({"vaccines":["Jonhson,Moderna","AstraZeneca,Moderna","Johnson,Pfizer"]})
print(vaccines)

输出:

              vaccines
0      Jonhson,Moderna
1  AstraZeneca,Moderna
2       Johnson,Pfizer

获取包含所有疫苗组合的列表列表

vaccines_split = [v.split(",") for v in vaccines["vaccines"].unique()]
print(vaccines_split)

输出:

[['Jonhson', 'Moderna'], ['AstraZeneca', 'Moderna'], ['Johnson', 'Pfizer']]

将列表列表压缩为具有唯一值的单个列表

unique_names = list({v for i in vaccines_split for v in i})
print(unique_names)

输出:

['Moderna', 'AstraZeneca', 'Johnson', 'Pfizer', 'Jonhson']

现在您只需打印唯一名称的长度即可获得唯一疫苗的数量:

print(len(unique_names)