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

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

字符串
预期产出:

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


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

6kkfgxo0

6kkfgxo01#

您忘记提供的列表解析:

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

字符串

bsxbgnwa

bsxbgnwa2#

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

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

个字符

z18hc3ub

z18hc3ub3#

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

d = {c: i for i,c in enumerate(df.columns)}
idx = pd.DataFrame(cols).replace(d).to_numpy()
#array([[0, 1],
#       [2, 1],
#       [0, 1]])

np.take_along_axis(df.to_numpy(), idx, axis=1)
#array([[1, 5],
#       [7, 4],
#       [3, 0]])

字符串

相关问题