我需要从Python中的表中读取一些值。我需要的列是最后一列,但是很多行没有填充所有值。这是其中的一部分,我需要阅读最后一栏中的数字。
XMSJ 233156.2+195123 23 31 56.2 +19 51 22.6 22.98 22.06 21.15 Y BLAGN 0.718
XMSJ 233158.7+194440 23 31 58.8 +19 44 39.2 23.47 22.24 21.21 Y BLAGN 1.418
XMSJ 233201.5+200406 23 32 01.5 +20 04 06.4 Y BLAGN 1.517
XMSJ 233203.2+200626 23 32 03.2 +20 06 27.7 21.07 20.36 20.12 19.30 Y BLAGN 1.901
XMSJ 233207.3+200529 23 32 07.4 +20 05 29.1 22.26 21.61 21.48 Y BLAGN 1.897
XMSJ 233209.8+194517 23 32 09.8 +19 45 17.4 20.26 19.05 18.37 19.30 Y BLAGN 2.027
我尝试了这个data = np.genfromtxt(dataset, unpack=True, usecols=(14,), invalid_raise=False)
,但这只是跳过了不完整的行,而我仍然想要这些值(此处的输出为NA NA NA 1.901 NA 2.027
,而我需要0.718 1.418 1.517 1.901 1.897 2.027
。有人告诉我该怎么做?谢谢!
答案 0 :(得分:0)
您的问题是np.genfromtxt
不知道如何处理空白字段。据它了解,任何连续的空格都被压扁为一个空格,并且无法猜出哪个值应该是哪个字段。
这是从numpy.genfromtxt
documentation开始的:“当空格用作分隔符时,或者没有给定分隔符作为输入时,两个字段之间不应该有任何丢失的数据。”
如果行中的字段长度恒定,您可以做的是首先明确地将行拆分为所需的列:
rows = []
with open('table.txt') as table_file:
for line in table_file:
row = [
line[0:4], # XMSJ
line[5:20], # 233156.2+195123
# etc.
]
# TODO: find blank values within the row; and replace them
# with None, NaN, or some other appropriate dummy value.
# Left as an exercise for you.
rows.append(row)
data = np.array(rows) # but of course you probably want to type-cast the columns properly, also left as an exercise.