多重索引(层次化索引)的DataFrame,如何增加一行数据?

acneyang 2018-05-02 04:10:33
请教大家,如果是一个带多重索引的DataFrame,如何添加一行或者几行数据?比如下面的代码,想增加一行,索引ad值为4,索引id值为12,a值为5,ad值诶100,该如何写?请指教!

df = pd.DataFrame()
df['a'] = list(range(10,30,2))
df['ad'] = df['a']
df.index.name = 'id'
df = df.set_index([df['ad'], df.index], drop=False)


数据如下:
a ad
ad id
1 0 10 1
1 12 1
2 14 1
3 16 1
4 18 1
2 5 20 2
6 22 2
7 24 2
8 26 2
9 28 2
...全文
1924 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40421791 2018-11-15
  • 打赏
  • 举报
回复
多重索引添加一行是比较麻烦,要分两个步骤,先添加index,在添加数据,不然会出现重复index然后再次查询这个添加的index时就会报错,具体做法这样: df1 = pd.DataFrame(np.arange(12).reshape(4,3),index=[list("aabb"),[1,2,3,4,]],columns=["D","E","F"]) df1.index.names = ("A","B") a = pd.DataFrame({"A":["a"],"B":3,}) # 先创建一个 a = a.set_index(["A","B"]) df1 = pd.concat([df1,a],axis=1) df1.loc[("a",3),:] = [1,2,3] # print(df1.xs(("a",2))) print(df1) 当然我感觉肯定还有更高级的方法不用每次都创建一个新的DataFrame,不过还没有找到
acneyang 2018-05-04
  • 打赏
  • 举报
回复
期待其它回复,有没有更快的方式
acneyang 2018-05-04
  • 打赏
  • 举报
回复
@xtfge0915非常感谢,我发现一个简单的办法,但不知道是不是速度最快的 df.loc[(29 , 10) , :] = [31,32] 这样就可以了,多重索引其实是个tuple
叫我AI侠 2018-05-02
  • 打赏
  • 举报
回复
不好意思,刚才你在我博客下提问,我回复的时候好像不小心把你的评论删了,https://blog.csdn.net/xtfge0915/article/details/80169597希望这个可以帮到你

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧