通过使用元组索引的 loc 选择通过赋值填充空数据框

Filling an empty dataframe by assignment via loc selection with tuple indices

为什么这样做?

a=pd.DataFrame()
a.loc[1,2]=0

>
     2
1  0.0

而且,这行不通吗?

a=pd.DataFrame()
a.loc[(1,2),2]=0
>
KeyError: '[1 2] not in index'

后者是我想做的。我将通过带有元组指定索引的 loc 选择,从没有值、0 行、0 列的数据框中通过赋值来填充值。

如果您的数据框已经有一个多索引,则使用元组作为索引是可行的:

import pandas as pd

# Define multi-index
index = pd.MultiIndex.from_product([[],[]], names=['first', 'second'])
# or
# index = pd.MultiIndex.from_tuples([], names=['first', 'second']) 

a = pd.DataFrame(index=index)
a.loc[(1,2), 2]=0

#                 2
# first second     
# 1.0   2.0     0.0

我喜欢 ,因为它不像魔术。所有这些都是为了设置2级多索引所做的努力。

set_index 有空数组

i = np.array([])
a = pd.DataFrame().set_index([i, i])
a.loc[(1, 2), 2] = 0

a

           2
1.0 2.0  0.0

稍微简洁一些

a = pd.DataFrame().set_index([np.array([])] * 2)
a.loc[(1, 2), 2] = 0

pd.concat

a = pd.concat([pd.DataFrame()] * 2, keys=[1, 2])
a.loc[(1, 2), 2] = 0

a

       2
1 2  0.0