python - 当列名与 Pandas 的数据内联时,如何读取 .txt 文件?

标签 python pandas dataframe file

我正在尝试使用 Pandas 将 .txt 文件读入数据框。我遇到的问题是列名与每一行的数据一致。这让我很难只获取数据,因为我不确定分隔符应该是什么。我的数据如下所示:(完整文件 here)

f= Al N= 1 rho[g/cc]=   0.269861 V[A^3]=     166.02561792 T[K]=    2020958 P[GPa]=       1877.100    24.300 E[Ha]=       -59.56300000  1.39000000

f= Al N= 1 rho[g/cc]=   0.269861 V[A^3]=     166.02561792 T[K]=    4041916 P[GPa]=       4249.300    18.400 E[Ha]=       160.64900000  1.07400000

f= Al N= 1 rho[g/cc]=   0.269861 V[A^3]=     166.02561792 T[K]=    8083831 P[GPa]=       9208.000    31.500 E[Ha]=       513.26500000  1.80900000

我尝试做的是:

Al = pd.read_csv('Al_EOS_09-18-20.txt', skiprows=18, delimiter='=', names=['f', 'N', 'rho[g/cc]', 'V[A^3]', 'T[K]', 'P[GPa]', 'E[Ha]'])

返回的是一个包含正确列的数据框,但每列下的值包含下一列的值和名称。所以在 Al['f'] 下我得到 'Al N' 而不仅仅是 'Al'。

任何帮助将不胜感激!

最佳答案

pd.read_fwf

固定宽度

import pandas as pd
import io
import requests
url = "http://militzer.berkeley.edu/FPEOS/files/Al_EOS_09-18-20.txt"
s = requests.get(url).content.decode('utf-8')

df = pd.read_fwf(
    io.StringIO(s), skiprows=18, header=None,
    usecols=[1, 3, 5, 7, 9, 11, 12, 14, 15],
    names='f N rho[g/cc] V[A^3] T[K] P[GPa]0 P[GPa]1 E[Ha]0 E[Ha]1'.split()
)

df

      f  N  rho[g/cc]      V[A^3]       T[K]    P[GPa]0  P[GPa]1     E[Ha]0  E[Ha]1
0    Al  1   0.269861  166.025618    2020958     1877.1     24.3    -59.563   1.390
1    Al  1   0.269861  166.025618    4041916     4249.3     18.4    160.649   1.074
2    Al  1   0.269861  166.025618    8083831     9208.0     31.5    513.265   1.809
3    Al  1   0.269861  166.025618   16167663    18629.3     36.3   1055.213   2.077
4    Al  1   0.269861  166.025618   32335325    37424.5     33.7   2129.898   1.924
..   .. ..        ...         ...        ...        ...      ...        ...     ...
235  Al  1   2.383356    1.383547   16167663  2126283.1   5177.3    938.925   2.532
236  Al  1   2.383356    1.383547   32335325  4411441.4   4979.6   2046.679   2.373
237  Al  1   2.383356    1.383547   64670651  8944752.2   4660.1   4212.630   2.231
238  Al  1   2.383356    1.383547  129341301  7991672.2   4802.6   8525.231   2.314
239  Al  1   2.383356    1.383547  215568835    17138.4   7894.0  14252.907   8.470

[240 rows x 9 columns]

关于python - 当列名与 Pandas 的数据内联时,如何读取 .txt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66589600/

相关文章:

python - 如何发出错误而不是系统错误

python - Pandas:合并数据框并创建新的条件列

python - 使用严格的填充限制填充 pandas 数据框

python - 按 ID 分组并对一列的值应用条件

python - 用餐哲学家的非阻塞解决方案

python - 使用计算日期范围内出现次数的算法来分析 python 列表

python - python daskivot_table和pandasivot_table之间的区别

python - 无法正确读取保存为 json 文件的字典

python - 以句子结构显示数据框行

r - 列表到 R : Keeping List indexes 中的数据帧转换