Pandas:使用转置后旧索引名称在使用 dataFrame.index.set_names 时不会消失
Pandas: After using transpose old index name does not vanish when using dataFrame.index.set_names
转置具有命名索引的 pandas Dataframe 时,先前的索引名称(对于第一列中的索引)显示为列名称的第一个条目。
示例:
原始 DataFrame df_1
1800
1801
1802
country
Germany
38.4
38.4
38.4
df_2 = df_1.T
df_2 是
country
Germany
1800
38.4
1801
38.4
1802
38.4
第一个问题。为什么国家现在是 1800、1801 等的指数,有没有更好的
转置选项以避免这种情况?
尝试重命名索引时
df_2.index.set_names(["year"],inplace=True)
显示如下结果
country
Germany
year
1800
38.4
1801
38.4
1802
38.4
问题二。为什么国家仍然存在以及如何删除它?
国家是df_1
索引的名称,您可以查看:
df_check = df_1.rename_axis(columns=['year'], index=['country'])
print(df_check.index.name, df_check.columns.name)
所以你可以这样做:
df_1 = df_1.rename_axis(index=None)
First question. Why is country now the index for 1800, 1801 etc. and is there a better tranpose option to avoid this?
'country'是列轴的名称/标签,因为它是转置前DataFrame的索引名称。
df_2.index.set_names(["year"],inplace=True)
Question two. Why is country still there and how to remove it?
因为你只是在改变转置DataFrame的索引名称。列轴的名称('country')保持不变。
删除方法:
您可以使用DataFrame.rename_axis
同时更改两个轴(索引和列)的名称。如果要删除给定轴的名称,只需传递 None.
例如,
# or df_2 = df1.T.rename_axis(index='year', columns=None) if you prefer
>>> df_2 = df_1.rename_axis(index=None, columns='year').T
>>> df_2
Germany
year
1800 38.4
1801 38.4
1802 38.4
转置具有命名索引的 pandas Dataframe 时,先前的索引名称(对于第一列中的索引)显示为列名称的第一个条目。
示例:
原始 DataFrame df_1
1800 | 1801 | 1802 | |
---|---|---|---|
country | |||
Germany | 38.4 | 38.4 | 38.4 |
df_2 = df_1.T
df_2 是
country | Germany |
---|---|
1800 | 38.4 |
1801 | 38.4 |
1802 | 38.4 |
第一个问题。为什么国家现在是 1800、1801 等的指数,有没有更好的 转置选项以避免这种情况?
尝试重命名索引时
df_2.index.set_names(["year"],inplace=True)
显示如下结果
country | Germany |
---|---|
year | |
1800 | 38.4 |
1801 | 38.4 |
1802 | 38.4 |
问题二。为什么国家仍然存在以及如何删除它?
国家是df_1
索引的名称,您可以查看:
df_check = df_1.rename_axis(columns=['year'], index=['country'])
print(df_check.index.name, df_check.columns.name)
所以你可以这样做:
df_1 = df_1.rename_axis(index=None)
First question. Why is country now the index for 1800, 1801 etc. and is there a better tranpose option to avoid this?
'country'是列轴的名称/标签,因为它是转置前DataFrame的索引名称。
df_2.index.set_names(["year"],inplace=True)
Question two. Why is country still there and how to remove it?
因为你只是在改变转置DataFrame的索引名称。列轴的名称('country')保持不变。
删除方法:
您可以使用DataFrame.rename_axis
同时更改两个轴(索引和列)的名称。如果要删除给定轴的名称,只需传递 None.
例如,
# or df_2 = df1.T.rename_axis(index='year', columns=None) if you prefer
>>> df_2 = df_1.rename_axis(index=None, columns='year').T
>>> df_2
Germany
year
1800 38.4
1801 38.4
1802 38.4