gpt4 book ai didi

python - 使用列标签列表从 DataFrame 行中选择列

转载 作者:行者123 更新时间:2023-11-28 19:52:30 28 4
gpt4 key购买 nike

我有一个值列表,其中包含我想要的 pandas DataFrame 每一行的列索引。如何将这个列标签列表映射到 DataFrame 的每一行?

如果我简单地使用列表索引 DataFrame,整个列表将应用于每一行,就像这样。

In [10]: df = pd.DataFrame(np.random.randn(5,2), columns=list('AB'))

In [11]: df
Out[11]:
A B
0 -0.082240 -2.182937
1 0.380396 0.084844
2 0.432390 1.519970
3 -0.493662 0.600178
4 0.274230 0.132885

In[12]: selection = list('ABBAA')

In[13]: selection
Out[13]: ['A', 'B', 'B', 'A', 'A']

In[14]: df[selection]
Out[14]:
A B B A A
0 -0.082240 -2.182937 -2.182937 -0.082240 -0.082240
1 0.380396 0.084844 0.084844 0.380396 0.380396
2 0.432390 1.519970 1.519970 0.432390 0.432390
3 -0.493662 0.600178 0.600178 -0.493662 -0.493662
4 0.274230 0.132885 0.132885 0.274230 0.274230

选择列表中的每个元素表示要从 DataFrame 中的相应行中选择的列。在此示例中,我想要第一行的 A 列,第二行和第三行的 B 列,然后是第四行和第五行的 A 列。算出来这是上面结果的对角线。我的实际 DataFrame 大得多,我认为构建上述结果只是为了选择对角线是没有意义的。

我当然可以通过遍历行来解决这个问题,但我希望 Pandas 有一个内置的方法来做到这一点。我正在寻找获得以下结果的方法。

In[15]: df <do something> selection
Out[15]:
0 -0.082240
1 0.084844
2 1.519970
3 -0.493662
4 0.274230

最佳答案

如果您首先根据选择选择列然后获取对角线值,则您将数据框切片两次。您可以改为使用 lookup它返回与每个 (row, col) 对对应的值的数组。

df.lookup(df.index, selection)

array([-0.08224 , 0.084844, 1.51997 , -0.493662, 0.27423 ])

如果你想要 Pandas 系列形式的数据,

pd.Series(df.lookup(df.index, selection))

0 -0.082240
1 0.084844
2 1.519970
3 -0.493662
4 0.274230

关于python - 使用列标签列表从 DataFrame 行中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54243464/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com