python-3.x - read_table 处理缺失的字符串
问题描述
在尝试使用 pandas 从 .txt 文件导入数据时read_table()
,我遇到了一个有趣的问题。
该文件包含一个仅部分填充字符串的列 ( OrigVol )。然后用以下列中的值填充空单元格,并在末尾添加 NaN,这种转变会导致空单元格。下图显示了使用pd.read_table( file.txt, sep = r'\s+')
after的结果import pandas as pd
。
OrigVol列应包含空字符串或 NaN,而不是prim_pos_eutags列。我是熊猫的新手,很难想出一个完全重现问题的 MWE。需要该文件(我无法上传)。
也许我错过了指定导入选项。如果需要更多信息,请告诉我。
任何提示都非常感谢!
根据建议,我提供了一个示例文件的前 8 行
Name Subtype ProcName Material Creator OrigVol trklen prim_pos_eutags
top 0 initStep undefined undefined top 0 prim_pos_eudata
top 91 Transportation Vacuum undefined 2.27009877562523E-12 prim_pos_eudata
QC5L_2_v 91 Transportation Vacuum undefined 3.50000000000227 prim_pos_eudata
DRIFT_8609_v 91 Transportation Vacuum undefined 3.80000000000518 prim_pos_eudata
BC1L_2_v 23 SynRad Vacuum undefined 68.1607816456518 prim_pos_eudata
BC1L_2_v 91 Transportation Vacuum undefined 79.0910350747966 prim_pos_eudata
DRIFT_8610_v 91 Transportation Vacuum undefined QC2_v 79.3910346856657 prim_pos_eudata
解决方案
感谢Anant Mittal的建议,问题得以解决。
但是,我做了一些小的改动来实现一个干净的数据框,第一行作为标题。
input_file = open('test.txt', "r")
data = []
for line in input_file:
splitted_list = line.split()
if len(splitted_list) == 8: data.append( splitted_list )
if len(splitted_list) < 8: # 8 is number of columns, change it if it is wrong
splitted_list.insert(5, "") # add an empty string inn the 5th column (change the number if it is wrong)
data.append(splitted_list)
test = pd.DataFrame.from_records( data )
# first row to select header
header = test.iloc[0]
# exclude first line
test = test[1:]
# reset the header
test.columns = header
test
推荐阅读
- php - 尝试挂载卷时 Docker 工具箱上的 Apache 禁止错误
- javascript - 标签模式下的 Select2 在关闭后保持焦点,并且不按字母顺序排序
- typescript - 使用带有类验证器的验证管道
- powerbi - Power Pivot:比较措施并引用最高的措施
- java - my app crashed after adding admob banner code on mainactivity.java
- c# - Greater in variable
- c - Can a 'for' loop inside of a 'for' loop use the same counter variable name?
- ios - AirPlay: redirect audio by showing the available devices popup
- google-apps-script - Overwriting a PNG file in Drive with a chart blob from Sheets
- memory-management - @escaping completionHandler - How does memory management work for them?