如何有效地读取pandas,使用列名数组

7tofc5zh  于 2023-11-15  发布在  其他
关注(0)|答案(3)|浏览(79)
  1. df = pd.DataFrame({"col_a": [1,2,3], "col_b": [5,4,0], "col_c": [9,7,6])
  2. cols = [["col_a", "col_b"], ["col_c", "col_b"], ["col_a", "col_b"]]

字符串
预期产出:

  1. [[1,5], [7,4], [3,0]]


我知道这可以通过使用列表理解来实现,因为我有超过百万条记录,所以我正在寻找更有效的方法。

6kkfgxo0

6kkfgxo01#

您忘记提供的列表解析:

  1. In [27]: [row[1][col].to_list() for row, col in zip(df.iterrows(), cols)]
  2. Out[27]: [[1, 5], [7, 4], [3, 0]]

字符串

bsxbgnwa

bsxbgnwa2#

我不认为你将能够做到这一点,而不迭代的cols变量。尝试这一点-

  1. [df.loc[i,j].tolist() for i,j in enumerate(cols)]

个字符

z18hc3ub

z18hc3ub3#

您可以将标签Map到索引,然后take_along_axis

  1. d = {c: i for i,c in enumerate(df.columns)}
  2. idx = pd.DataFrame(cols).replace(d).to_numpy()
  3. #array([[0, 1],
  4. # [2, 1],
  5. # [0, 1]])
  6. np.take_along_axis(df.to_numpy(), idx, axis=1)
  7. #array([[1, 5],
  8. # [7, 4],
  9. # [3, 0]])

字符串

相关问题