我想用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