gpt4 book ai didi

python - 如何按名称选择不相邻的多个列并结合几种切片方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:26 26 4
gpt4 key购买 nike

有没有办法选择多个不相邻的列并结合几种方法?

测试数据框:

test = pd.DataFrame(np.random.rand(3, 9),
columns=['ID', 'rfm_snittbeløp_gaver', 'rfm_maksbeløp_gaver', 'rfm_antall_kampanjer',
'a','b','c','d','e'])

假设我想要以下列:ID,所有以 rfm、a:c 和 e 开头的列。按照这个顺序。

我认为按照这些思路可以做到,但我无法让它发挥作用

frames = [test.loc[:, 'ID'],
test.loc[:, test.columns.str.startswith('rfm')],
test.loc[:, 'a':'c'],
test.iloc[:, -1]]

test_sub = pd.concat(frames)

我读到它会重置索引,而且我将无法控制列的顺序。

最好有类似 np.r_.loc 来组合在这篇文章中找到的切片

  1. Selecting non-adjacent columns by column number pandas

但我不喜欢在引用列时使用索引位置

非常感谢任何帮助

最佳答案

这是使用 np.r_ 的方法和 get_loc()get_indexer() :

ID= test.columns.get_loc('ID')
rfm=test.columns.get_indexer(test.columns[test.columns.str.startswith('rfm')])
a=test.columns.get_loc('a')
c=test.columns.get_loc('c')
e=test.columns.get_loc('e')

test.iloc[:,np.r_[ID,rfm,a:c+1,e]]

         ID  rfm_snittbeløp_gaver  rfm_maksbeløp_gaver  rfm_antall_kampanjer  \
0 0.822275 0.155649 0.189058 0.050138
1 0.188038 0.286731 0.509774 0.171374
2 0.626211 0.477937 0.585987 0.358124

a b c e
0 0.652142 0.492184 0.464453 0.361395
1 0.242480 0.963673 0.898177 0.813195
2 0.863088 0.781858 0.924203 0.690219

关于python - 如何按名称选择不相邻的多个列并结合几种切片方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197019/

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