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)
推荐阅读
- tailwind-css - 如何将 bit.dev 与 tailwindcss 一起使用
- google-apps-script - 如何使功能自动化?
- node.js - 子进程以 SIGTERM 退出(可能是由于超出了 maxBuffer);我如何确认这是缓冲区问题并修复它?
- java - Admob 广告未显示
- python - 如何从 github 安装 longformer 库
- python - 有没有办法解决geopandas的这个导入错误?
- swift - Swiftui 通知时间间隔至少 60
- android - 使用 OkHttp 在 Kotlin 中发送和接收网络请求
- php - 为什么一种方法会产生注意:未定义的索引:
- .net - 如何使用 BindingSource 显示更新的值(来自另一个 Windows 窗体或工作站的更改)