首页 > 解决方案 > 无法将数据从一个系列附加到熊猫中的其他系列

问题描述

我正在尝试寻找用于 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())

在此处输入图像描述

我收到这个关键错误。

标签: pandasdata-scienceseries

解决方案


您在定义的新 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)

推荐阅读