如何使用Pandas为具有多索引列的空数据帧赋值



我想用Pandas创建一个带有多索引列的空数据帧,然后稍后填充值。我该怎么做?

在这个例子中,我可以创建数据帧,但不能用.loc为其赋值。

segment = 'segment_1'
tuples = [(segment, 'market', 'symbol'),
(segment, 'market', 'base'),
(segment, 'market', 'quote'),
(segment, 'market', 'wallet'),
(segment, 'market', 'type'),
(segment, 'market', 'margined'),
(segment, 'market', 'derivative'),
(segment, 'funds', 'wallet'),
(segment, 'funds', 'code'),
(segment, 'type', 'action'),
(segment, 'type', 'transfer'),
(segment, 'type', 'priority'),
]
index = pd.MultiIndex.from_tuples(tuples, names=["level_1", "level_2", 'level_3'])
df = pd.DataFrame(columns=index)
df.loc[:, ('segment_1', 'market', 'symbol')] = 1
df
level_1 segment_1
level_2 market  funds   type
level_3 symbol  base    quote   wallet  type    margined    derivative  wallet  code    action  transfer    priority

尽可能地,不可能为该数据帧设置值。这是什么原因?我需要先创建一个索引吗?

loc中使用了:来选择所有行,但由于不存在行,因此未设置值。所以解决方案是在这里设置像0这样的索引标签:

df.loc[0, ('segment_1', 'market', 'symbol')] = 1
print (df)
level_1 segment_1                                                         
level_2    market                                             funds        
level_3    symbol base quote wallet type margined derivative wallet code   
0               1  NaN   NaN    NaN  NaN      NaN        NaN    NaN  NaN   
level_1                           
level_2   type                    
level_3 action transfer priority  
0          NaN      NaN      NaN  

最新更新