python - 如何更改或访问 pandas MultiIndex 列标题?

标签 python pandas dataframe

我有以下 Pandas DataFrame,但在更新列标题值或轻松访问标题值时遇到问题(例如,在标题的 (lon,lat) 位置绘制时间)。

df = pd.DataFrame(columns = ["id0", "id1", "id2"])
df.loc[2012]= [24, 25, 26]
df.loc[2013]= [28, 28, 29]
df.loc[2014]= [30, 31, 32]

df.columns = pd.MultiIndex.from_arrays([df.columns, [66,67,68], [110,111,112]],
                                       names=['id','lat','lon'])

然后看起来像这样:

>>> df
id     id0   id1   id2
lat     66    67    68
lon    110   111   112
2012  24.0  25.0  26.0
2013  28.0  28.0  29.0
2014  30.0  31.0  32.0

我希望能够调整 df['id0']plot(df.ix[2014]) 的纬度或经度,但在(x,y) 位置基于(lon,lat)

最佳答案

您可以使用 df.columns.get_level_values('lat') 来获取索引对象。这将返回索引的副本,因此您不能扩展此方法来就地修改坐标。

但是,您可以直接访问关卡并使用此解决方法就地修改它们。

import pandas as pd
import numpy as np

df = pd.DataFrame(columns = ["id0", "id1", "id2"])
df.loc[2012]= [24, 25, 26]
df.loc[2013]= [28, 28, 29]
df.loc[2014]= [30, 31, 32]

df.columns = pd.MultiIndex.from_arrays([df.columns, [66,67,68], [110,111,112]],
                                       names=['id','lat','lon'])

ids = df.columns.get_level_values('id')
id_ = 'id0'
column_position = np.where(ids.values == id_)

new_lat = 90
new_lon = 0

df.columns._levels[1].values[column_position] = new_lat
df.columns._levels[2].values[column_position] = new_lon

关于python - 如何更改或访问 pandas MultiIndex 列标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37369317/

相关文章:

python - 从 sqlite 表中提取项目以在 Python 中使用时遇到问题

java - 通过shell脚本运行maven项目和python文件

python - 在打开 csv 文件出错之前暂停脚本

r - 根据字符串模式匹配拆分数据框列

python - 使用 python 更改特定 pandas 数据框列中的行值

python len 函数问题

python - 为什么这个 Python 函数不起作用?

python - 从 .fits 文件构建 pandas 数据框

python - Pandas 应用于数据框列以返回带有后缀的多列

python - pandas:如何通过选择列范围来过滤行?