在 Pandas 中对 DataFrame 进行列切片
Manav Narula
2023年1月30日
2020年12月19日
-
使用
loc()
对 Pandas DataFrame 中的列切片 -
使用
iloc()
在 Pandas DataFrame 中列切片 -
使用
redindex()
在 Pandas DataFrame 中切列片
Pandas 中的列式切片允许我们将 DataFrame 切成子集,这意味着它从原来的 DataFrame 中创建一个新的 Pandas DataFrame,其中只包含所需的列。我们将以下面的 DataFrame 为例来进列切片操作。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,4), columns = ['a','b','c','d'])
print(df)
输出:
a b c d
0 0.797321 0.468894 0.335781 0.956516
1 0.546303 0.567301 0.955228 0.557812
2 0.385315 0.706735 0.058784 0.578468
3 0.751037 0.248284 0.172229 0.493763
使用 loc()
对 Pandas DataFrame 中的列切片
Pandas 库为我们提供了一种以上的方法来进行列式切片。第一种是使用 loc()
函数。
Pandas 的 loc()
函数允许我们使用列名或索引标签来访问 DataFrame 的元素。使用 loc()
进行列切片的语法:
dataframe.loc[:,[columns]]
例子:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,4), columns = ['a','b','c','d'])
df1 = df.loc[:,'a':'c'] #Returns a new dataframe with columns a,b and c
print(df1)
输出:
a b c
0 0.344952 0.611792 0.213331
1 0.907322 0.992097 0.080447
2 0.471611 0.625846 0.348778
3 0.656921 0.999646 0.976743
使用 iloc()
在 Pandas DataFrame 中列切片
我们也可以使用 iloc()
函数来使用行和列的整数索引来访问 DataFrame 的元素。使用 iloc()
对列进行切片的语法。
dataframe.iloc[:,[column-index]]
例:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,4), columns = ['a','b','c','d'])
df1 = df.iloc[:,0:2] #Returns a new dataframe with first two columns
print(df1)
输出:
a b
0 0.034587 0.070249
1 0.648231 0.721517
2 0.485168 0.548045
3 0.377612 0.310408
使用 redindex()
在 Pandas DataFrame 中切列片
reindex()
函数也可用于改变 DataFrame 的索引,并可用于列的切片。reindex()
函数可以接受许多参数,但对于列的分割,我们只需要向函数提供列名。
使用 reindex()
进行列切片的语法:
dataframe.reindex(columns= [column_names])
例:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,4), columns = ['a','b','c','d'])
df1 = df.reindex(columns = ['c','b']) #Returns a new dataframe with c and b columns
print(df1)
输出:
c b
0 0.429790 0.962838
1 0.605381 0.463617
2 0.922489 0.733338
3 0.741352 0.118478
Author: Manav Narula
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn