我在用两列作为索引向pandas DataFrame添加行时遇到问题。这是我正在使用的代码:
df = pd.DataFrame(columns=['id', 'idx1', 'val'])
df = df.set_index(['id', 'idx1'])
df.loc[123, 'a'] = [1]
则df
变为:
val a
id idx1
123 NaN 1
然而,我希望得到这个:
val
id idx1
123 a 1
当我将索引的长度更改为三(或一(时,我得到了我所期望的。例如,如果我运行以下代码:
df = pd.DataFrame(columns=['id', 'idx1', 'idx2', 'val'])
df = df.set_index(['id', 'idx1', 'idx2'])
df.loc[123, 'a', 'b'] = [1]
df
变为:
val
id idx1 idx2
123 a b 1
将两列引用为索引时有什么不同吗?
您的数据帧为空。仅定义索引和列名称。那么熊猫应该如何知道你所说的df.loc[123, 'a'] = 1
是什么意思呢?
- 创建具有第一个索引
123
和列'a'
的条目,或者 - 使用
123
和'a'
作为多索引的两个级别
解决方案:
df.loc[(123, 'a'), 'val'] = 1