python - 在python中移动缺少数据的行
问题描述
我有一个通过 python 读取的 txt 文件,如下所示:
Text File:
18|Male|66|180|Brown
23|Female|67|120|Brown
16|71|192|Brown
22|Male|68|185|Brown
24|Female|62|100|Blue
其中一行缺少数据,问题是当我将其读入数据框时,它看起来像这样:
Age Gender Height Weight Eyes
0 18 Male 66 180 Brown
1 23 Female 67 120 Brown
2 16 71 192 Brown NaN
3 22 Male 68 185 Brown
4 24 Female 62 100 Blue
我想知道是否有一种方法可以在不移动所有列的情况下移动丢失数据的行。这是我到目前为止所拥有的:
import pandas as pd
df = pd.read_csv('C:/Documents/file.txt', sep='|', names=['Age','Gender', 'Height', 'Weight', 'Eyes'])
df_full = df.loc[df['Gender'].isin(['Male','Female'])]
df_missing = df.loc[~df['Gender'].isin(['Male','Female'])]
df_missing = df_missing.shift(1,axis=1)
df_final = pd.concat([df_full, df_missing])
我希望只分离出缺少数据的那些,将列移动一列,然后将数据框放回没有丢失数据的数据。但我不确定如何在某个点移动列。这是我试图达到的结果:
Age Gender Height Weight Eyes
0 18 Male 66 180 Brown
1 23 Female 67 120 Brown
2 16 NaN 71 192 Brown
3 22 Male 68 185 Brown
4 24 Female 62 100 Blue
我如何完成并不重要,但我使用的文件有数千行,所以我无法单独修复它们。任何帮助表示赞赏。谢谢!
解决方案
RegEx 可以在这里提供帮助。
搜索 ^(\d+\|)(\d)并使用$1|$2进行替换(刚刚添加了一个垂直条,其中Gender缺少"group 1 + | + group 2")
这可以在几乎所有文本编辑器(Notepad++、VSC、Sublime 等)中完成
请参阅链接后面的示例:https ://regexr.com/50gkh
推荐阅读
- validation - Firefox 验证输入复选框的焦点(Angular 6)
- c++ - MSVC:以 64 位代码读取特定的 64 位或 32 位寄存器(例如 R10)?
- python - json.load 痛苦创建字典而不是列表
- c# - 如何防止PowerShell改变环境变量?
- c# - 主机游戏角色放置
- javascript - C++ 客户端使用 unix 套接字与 node.js 服务器对话的简单示例
- android - 如何在不影响会话计数的情况下触发 Google Analytics 事件?
- webgl - 如何获取 mapbox-gl-js z-buffer
- kubernetes - kubernetes efk:fluentd 的“过滤器”过滤了什么?
- c# - 您可以向开关添加验证吗?