通过使用元组索引的 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
为什么这样做?
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
我喜欢
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