将包含数字和字符的文本文件转换为numpy数组和字符串列表[已关闭]

jjjwad0x  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(118)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

5小时前关门了。
Improve this question
这看起来很容易,但我不能解决它,没有一个问题没有答案,我在这里找到的是有用的这种情况下。我有一个文本文件,有这样的valies:

-4.040     -75.444 8156.648 1.00 ABC2512
  -4.036     -75.444 8161.305 2.00 ABC2512
  -4.032     -75.444 8174.597 3.00 ABC2512
  -4.029     -75.444 8196.432 4.00 ABC2512
  -4.026     -75.444 8212.521 5.00 ABC1240
  -4.012     -75.443 8268.073 11.00 ABC1240
  -4.009     -75.443 8280.411 12.00 ABC1240

最后,我想从前四列中得到4个不同的numpy数组,从最后一列中得到一个字符串列表。如果我也能把头文件作为第一行,那就更好了。到目前为止,我试着把它转换成如下的datarame:

f = open(irh_file)
g = pd.DataFrame(list(f))

但是我不能拆分列,因为分隔符是制表符和空格。

mi7gmzs6

mi7gmzs61#

您可以使用pd.read_csv将数据加载到dataframe中:

import pandas as pd

df = pd.read_csv("out1.txt", sep=r"\s+", header=None)
print(df)

印刷品:

0       1         2     3        4
0 -4.040 -75.444  8156.648   1.0  ABC2512
1 -4.036 -75.444  8161.305   2.0  ABC2512
2 -4.032 -75.444  8174.597   3.0  ABC2512
3 -4.029 -75.444  8196.432   4.0  ABC2512
4 -4.026 -75.444  8212.521   5.0  ABC1240
5 -4.012 -75.443  8268.073  11.0  ABC1240
6 -4.009 -75.443  8280.411  12.0  ABC1240

然后道:

arr_1 = df[0].values
print(arr_1)

arr_5 = df[4].tolist()
print(arr_5)

印刷品:

[-4.04  -4.036 -4.032 -4.029 -4.026 -4.012 -4.009]
['ABC2512', 'ABC2512', 'ABC2512', 'ABC2512', 'ABC1240', 'ABC1240', 'ABC1240']
ev7lccsx

ev7lccsx2#

您可以执行以下操作:

colnames = ['a', 'b', 'c', 'd', 'e']
data = pd.read_csv('irh_file.txt', delim_whitespace=True, names=colnames)
>>> data
       a       b         c     d        e
0 -4.040 -75.444  8156.648   1.0  ABC2512
1 -4.036 -75.444  8161.305   2.0  ABC2512
2 -4.032 -75.444  8174.597   3.0  ABC2512
3 -4.029 -75.444  8196.432   4.0  ABC2512
4 -4.026 -75.444  8212.521   5.0  ABC1240
5 -4.012 -75.443  8268.073  11.0  ABC1240
6 -4.009 -75.443  8280.411  12.0  ABC1240

相关问题