python - 根据没有特定值的列选择行并使用字典 - Python & Excel - 大数据
问题描述
我有超过一百万条记录和 700 列以类似 csv 的格式存储。每条记录代表每个人,每列中的所有值代表他对调查问题的回答。
所以,我给出了一段带有两个列的示例输入数据代码
df = pd.DataFrame({'Person_id':[1,2,3,4,5],
'Gender':[np.nan,np.nan,'1.Male','2.Female', np.nan],
'Ethnicity':['1.Chinese','2.Indian','3.Malay',np.nan,np.nan]})
基于上述代码的输入数据框如下图所示
从上面的数据集中,我们可以看到 person_id = 1,只有 Ethnicity 列的值。同样,person_id = 3,具有性别和种族列的值
这是字典的使用,如下图所示
df = pd.DataFrame({'0':['Gender','Ethnicity','Location','Age_at_test','Date of Birth'],
'1':['gen','eth','loc','age','dob']})
所以,我想在新的 excel 表中创建一个输出,如下图所示
Observation_id - 只是一个主键之类的东西。所有记录都是唯一的
从截图可以看出,没有 person_id = 5,因为他的两个值都是 NA。因此,我想保留不是 NA 的记录。例如,Person_id = 3 有两条记录,因为他有两列的值。
因此,例如,如果 person_id = 45 有所有 700 列的数据,我可能有 700 行。
同样,如果 person_id = 47 有 700 列的所有 NA's/empty,我将在输出表中没有他的条目。
本质上,我想转换数据,如屏幕截图所示。这里的独特之处不是通常的dropna,我想保留记录(行)但只删除人的列(特征)。
你能帮我看看如何完成这个端到端的数据转换吗?
解决此问题的任何解决方案都会有所帮助。我可以管理它以从那里扩展它或将我的数据分成块并逐部分进行。
解决方案
要删除所有列都包含 NaN 的行,请执行以下操作:
df = df.dropna(how='all', axis=0)
推荐阅读
- php - PHP 验证 Paypal webhook 签名
- go - exec.Command:当 cmd 包含睡眠时,扫描程序在命令完成之前停止
- python - 美丽的汤 find_all 给出空列表
- amazon-web-services - 是否建议在同一个 AWS 区域部署多个相同的应用程序?
- mysql - 从所有 id 列表中选择所有最后日期
- python - 仅在一列中添加具有附加值的新行
- python - python如何查看文件对象.obj中的数据
- javascript - 单击图标时无法显示输入
- view - 哪个用户在 Snowflake 上创建了视图
- swift - 无法在表格视图内的集合视图中设置单元格大小