gpt4 book ai didi

python - 如何对 Pandas 数据框进行子集化

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:48 25 4
gpt4 key购买 nike

我有一个包含 50 列的 pandas 数据框,我想选择 30 列。假设我们有以下数据框:

df = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",............, "z"]

我想选择“a”和“c”,然后是从“h”到“z”的所有列

请告知如何按名称或索引对该数据框进行子集化。

我希望生成的数据框如下所示:

df = ["a", "c", "h", "i", "j", "k", "l",............, "z"]

最佳答案

您可以使用 numpy.r_对于列的连接位置,然后使用 iloc选择:

print (df.iloc[:, np.r_[0,2,7: len(df.columns)]])

示例:

df = pd.DataFrame({'a':[1,2,3],
'b':[4,5,6],
'c':[7,8,9],
'd':[1,3,5],
'e':[5,3,6],
'f':[7,8,9],
'g':[1,3,5],
'h':[5,3,6],
'i':[7,8,9],
'j':[1,3,5],
'k':[5,3,6],
'l':[7,4,3],
'm':[7,4,3]})

print (df)
a b c d e f g h i j k l m
0 1 4 7 1 5 7 1 5 7 1 5 7 7
1 2 5 8 3 3 8 3 3 8 3 3 4 4
2 3 6 9 5 6 9 5 6 9 5 6 3 3

print (np.r_[0,2,7: len(df.columns)])
[ 0 2 7 8 9 10 11 12]

print (df.iloc[:, np.r_[0,2,7: len(df.columns)]])
a c h i j k l m
0 1 7 5 7 1 5 7 7
1 2 8 3 8 3 3 4 4
2 3 9 6 9 5 6 3 3

另一个解决方案是使用 exclude listdifference :

exclude = ['b','d','e','f','g']
cols = df.columns.difference(exclude)
print (cols)
Index(['a', 'c', 'h', 'i', 'j', 'k', 'l', 'm'], dtype='object')

print (df[cols])
a c h i j k l m
0 1 7 5 7 1 5 7 7
1 2 8 3 8 3 3 4 4
2 3 9 6 9 5 6 3 3

drop列:

exclude = ['b','d','e','f','g']
print (df.drop(exclude, axis=1))
a c h i j k l m
0 1 7 5 7 1 5 7 7
1 2 8 3 8 3 3 4 4
2 3 9 6 9 5 6 3 3

关于python - 如何对 Pandas 数据框进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40677249/

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