按字母顺序对 dtype 进行排序

NuV*_*lue 1 python list dataframe pandas

想象一下我们有一个pandas像这样的模拟数据框:

x = [1, 1000, 1001]
y = [200, 300, 400]
cat = ['first', 'second', 'third']
df = pd.DataFrame(dict(speed = x, price = y, award = cat))
Run Code Online (Sandbox Code Playgroud)

数据框df看起来像这样:

    speed   price   award
0   1       200     first
1   1000    300     second
2   1001    400     third
Run Code Online (Sandbox Code Playgroud)

如果我们想查看我们执行的列类型df.dtypes,则会给出以下输出:

speed     int64
price     int64
award    object
dtype: object
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否有办法获得此输出,但按列名称的字母顺序排列?所需的输出将是这样的:

award    object
price     int64
speed     int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

PD 我知道如何首先对 进行排序,df以便列按字母顺序显示 ( df.sort_index(axis=1, inplace=True)),然后执行dtypes. 但更愿意以更有效的方式做同样的事情。

jez*_*ael 6

Series.sort_index之后使用DataFrame.dtypes

print (df.dtypes.sort_index())
award    object
price     int64
speed     int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

或者DataFrame.sort_index之前:

print (df.sort_index(axis=1).dtypes)
Run Code Online (Sandbox Code Playgroud)