lambruscoAcido
lambruscoAcido

Reputation: 578

How to get and set single values in Pandas MultiIndex Dataframes

I defined a MultiIndex Dataframe as follows:

columns = pd.MultiIndex.from_product(
    [assets, ['A', 'B', 'C']], 
    names=['asset', 'var']
)
res = pd.DataFrame(0, index=data.index, columns=columns)

However, I did not have success setting or updating single values of this Dataframe. Any suggestion? Or should I move to use numpy arrays - because of efficiency?

Upvotes: 0

Views: 90

Answers (1)

jezrael
jezrael

Reputation: 863501

Use DataFrame.loc with tuples for select MultiIndex columns and set new value like:

assets = ['X','Y']
columns = pd.MultiIndex.from_product(
    [assets, ['A', 'B', 'C']], 
    names=['asset', 'var']
)
res = pd.DataFrame(0, index=range(3), columns=columns)
print (res)
asset  X        Y      
var    A  B  C  A  B  C
0      0  0  0  0  0  0
1      0  0  0  0  0  0
2      0  0  0  0  0  0

res.loc[0, ('X','B')] = 100
print (res)
asset  X          Y      
var    A    B  C  A  B  C
0      0  100  0  0  0  0
1      0    0  0  0  0  0
2      0    0  0  0  0  0

Upvotes: 1

Related Questions