python - 从现有表和列表创建新表

标签 python pandas

我正在读取一个表格数据文件,如下所示(为了解决这个问题而缩短):

  ID Ah Am  RAs  Ed Em  DEs   Vmag    U-B    B-V    V-I    e_    e_    e_    e_ _ _ _ _ mb n_ 2MASS
   1 10 42 57.6 -59 47 22.6 18.681         1.105  1.461 0.002       0.103 0.053 2 0 1 2       10425765-5947229
   2 10 42 57.7 -59 44 22.2 18.303                2.764 0.012             0.013 2 0 0 2
   3 10 42 57.7 -59 46 58.0 18.610                1.573 0.038             0.039 2 0 0 2       10425776-5946583
   4 10 42 57.8 -59 47 49.5 12.870         0.764  0.799 0.009       0.009 0.009 3 0 1 3       10425773-5947495
   5 10 42 57.8 -59 44 03.4 18.815         1.072  1.433 0.017       0.110 0.043 2 0 1 2
   6 10 42 57.8 -59 48 29.3 18.697                1.304 0.014             0.019 2 0 0 2       10425778-5948293
   7 10 42 57.8 -59 44 08.5 17.817         1.700  2.384 0.011       0.108 0.013 2 0 1 2       10425786-5944083
   8 10 42 57.9 -59 43 11.1 18.621         0.925  1.322 0.014       0.084 0.014 2 0 1 2
   9 10 42 58.0 -59 41 34.4 16.993         0.998  1.742 0.003       0.027 0.003 3 0 1 3       10425799-5941342
  10 10 42 58.0 -59 49 23.3 16.981         0.656  1.043 0.023       0.034 0.023 3 0 1 3       10425796-5949235
  11 10 42 58.1 -59 48 20.2 17.047         0.926  1.003 0.009       0.034 0.017 3 0 1 3
  12 10 42 58.1 -59 47 51.5 17.535         0.879  1.197 0.008       0.071 0.035 2 0 1 2
  13 10 42 58.2 -59 47 16.9 15.982         0.854  1.146 0.006       0.011 0.008 3 0 1 3       10425820-5947169
  14 10 42 58.2 -59 36 10.2 18.855                1.376 0.051             0.069 2 0 0 2
  15 10 42 58.2 -59 49 29.5 17.959         0.830  1.229 0.027       0.060 0.027 2 0 1 2       10425821-5949297
  16 10 42 58.2 -59 45 39.7 18.556         1.114  1.520 0.001       0.103 0.007 2 0 1 2
  17 10 42 58.3 -59 48 59.5 18.659         1.252  2.013 0.000       0.126 0.018 2 0 1 2       10425824-5948595
  18 10 42 58.3 -59 48 17.9 15.417         0.707  0.874 0.002       0.010 0.002 3 0 1 3       10425825-5948180
  19 10 42 58.3 -59 39 51.6 16.899         1.050  1.204 0.009       0.026 0.010 3 0 1 3       10425833-5939512
  20 10 42 58.3 -59 42 39.3 18.011         1.016  1.452 0.002       0.068 0.014 2 0 1 2       10425834-5942390
df = pd.read_fwf('Hur_et_al_2012_catalog/table1.dat', infer_nrows=1001)

我还有一个看起来像这样的列表(也缩短了)

total_sources = ['7', '9', '19']

total_sources 中的元素编号对应于第一个表的 ID 列。有没有办法创建第二个表,仅包含 total_sources 中列出的 ID 信息?因此,对于此示例,表格仅显示 ID 7、9 和 19 的信息。

最佳答案

import pandas as pd

df = pd.read_fwf('table1.dat', infer_nrows=1001)

total_sources = ['7', '9', '19']
rows = [int(x) for x in total_sources]
df_filtered = df[df['ID'].isin(rows)]
df_filtered

结果:

    ID  Ah  Am  RAs     Ed  Em  DEs     Vmag    U-B     B-V     ...     e_.1    e_.2    e_.3    _   _.1     _.2     _.3     mb  n_  2MASS
6   7   10  42  57.8    -59     44  8.5     17.817  NaN     1.700   ...     NaN     0.108   0.013   2   0   1   2   NaN     NaN     10425786-5944083
8   9   10  42  58.0    -59     41  34.4    16.993  NaN     0.998   ...     NaN     0.027   0.003   3   0   1   3   NaN     NaN     10425799-5941342
18  19  10  42  58.3    -59     39  51.6    16.899  NaN     1.050   ...     NaN     0.026   0.010   3   0   1   3   NaN     NaN     10425833-5939512

关于python - 从现有表和列表创建新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73450636/

相关文章:

python - 如何使用列模式填充 Pandas fillna()?

python - 使用 pandas python 中其他数据帧的值覆盖数据帧中的值

python - MLP分类

python - 使用参数列表删除行 Pandas

python - 将空白字符串替换为 nan

python - 如何获取先前未知的数组作为 Fortran 中函数的输出

Python/Matplotlib - 快速更新轴上的文本

python - 我应该对 Python 中的错误/非法参数组合提出哪个异常?

python - Pandas 最后 x 行的平均值

python - Tensorflow tf.scatter_update不更新浮点值