Python 如何使用pandas对多行进行索引
我不熟悉pandas,每当我实现代码时,第一个索引都会为每一行重复 我尝试的是: pg、ag、inc是阵列Python 如何使用pandas对多行进行索引,python,python-3.x,pandas,dataframe,multi-index,Python,Python 3.x,Pandas,Dataframe,Multi Index,我不熟悉pandas,每当我实现代码时,第一个索引都会为每一行重复 我尝试的是: pg、ag、inc是阵列 cases=['a1','a2','a3'] data={'RED':rg,'GREEN':gg,'BLUE':bb} stat_index=['HELO','HERE' ] df=pd.DataFrame(data,pd.MultiIndex.from_product([cases,stat_index]),['RED','GREEN','BLUE']) df.to_csv("OUT.C
cases=['a1','a2','a3']
data={'RED':rg,'GREEN':gg,'BLUE':bb}
stat_index=['HELO','HERE' ]
df=pd.DataFrame(data,pd.MultiIndex.from_product([cases,stat_index]),['RED','GREEN','BLUE'])
df.to_csv("OUT.CSV")
我得到的是:
RED GREEN BLUE
a1 HELO 304.907 286.074 12.498
a1 HERE 508.670 509.784 94.550
a2 HELO 448.974 509.406 56.466
a2 HERE 764.727 432.084 43.462
a3 HELO 412.539 602.001 10.849
a3 HERE 321.9 603.888 78.847
我真正想要的是:
RED GREEN BLUE
a1 HELO 304.907 286.074 12.498
HERE 508.670 509.784 94.550
a2 HELO 448.974 509.406 56.466
HERE 764.727 432.084 43.462
a3 HELO 412.539 602.001 10.849
HERE 321.9 603.888 78.847
不要这样做,除非你真的需要它 这是意料之中的,因为如果在第一级重复向文件写入
MulitIndex
。如果显示带有数据帧的多索引,则默认情况下仅不显示。但如果将multi_sparse
更改为False
,则可以检查真实数据:
with pd.option_context('display.multi_sparse', False):
print (df)
RED GREEN BLUE
a1 HELO 304.907 286.074 12.498
a1 HERE 508.670 509.784 94.550
a2 HELO 448.974 509.406 56.466
a2 HERE 764.727 432.084 43.462
a3 HELO 412.539 602.001 10.849
a3 HERE 321.900 603.888 78.847
主要原因是兼容性,如果在MulitIndex
中使用带有空格的read\u csv
,则需要进行预处理
但有可能:
a = df.index.get_level_values(0)
df.index = pd.MultiIndex.from_arrays([a.where(a.duplicated(), ''),
df.index.get_level_values(1)])
with pd.option_context('display.multi_sparse', False):
print (df)
RED GREEN BLUE
HELO 304.907 286.074 12.498
a1 HERE 508.670 509.784 94.550
HELO 448.974 509.406 56.466
a2 HERE 764.727 432.084 43.462
HELO 412.539 602.001 10.849
a3 HERE 321.900 603.888 78.847
我认为他希望输出为csv。例如,df表示为csv。@IMCoins是的,我想将其作为输出写入csv exaclty