python - 如何为 pandas DataFrame 设置全新的索引,而不是基于以前的索引数据关系?
问题描述
如何在与旧索引没有任何关系的情况下为我的数据分配一个全新的索引?
我知道reindex
方法
df = pd.DataFrame({'a': [1,2,3,4], 'b': [2,3,4,5]})
df
a b
0 1 2
1 2 3
2 3 4
3 4 5
df.reindex([1,2,3,4])
a b
1 2.0 3.0
2 3.0 4.0
3 4.0 5.0
4 NaN NaN
...但我只想修改行索引以获得
a b
1 1 2
2 2 3
3 3 4
4 4 5
评论:
- 我知道我可以使用构造函数构造一个带有预分配索引的数据框
DataFrame
。我需要完全修改现有的 DataFrame。 - 在这种特殊情况下
DataFrame.shift
可以工作 - 但如果我需要分配任意自定义索引,而不是移动现有索引怎么办?
提前致谢。
解决方案
set_index
在链式方法调用中,只要将要设置的标签包装在另一个列表中,了解可以使用不存在的标签调用的技巧可能会很有用。
>>> df.set_index([[1, 2, 3, 4]])
a b
1 1 2
2 2 3
3 3 4
4 4 5
>>>
>>> df.set_index([['w', 'x', 'y', 'z']])
a b
w 1 2
x 2 3
y 3 4
z 4 5
我真的不知道为什么会这样。查看set_index
我最好的猜测的文档是,这是创建只有一个级别的多索引的特殊情况,就像文档中的最后一个示例
df.set_index([[1, 2, 3, 4], 'year'])
但省略了第二个元素'year'
。
推荐阅读
- json - SwiftUI 本地 JSON 保存字符串值
- python - 如何为不和谐机器人 Python 制作仅服务器任务
- javascript - 重新初始化类实例会导致垃圾收集吗?
- unit-testing - 没有像 Karma 这样的运行器,像 Mocha 这样的测试框架如何运行测试?
- activemq-artemis - 连接到 ActiveMQ Artemis 队列的单个消费者中的消息顺序问题
- python - 缩放测功机...找不到该过程类型(网络)
- r - 在R中存储来自for循环的值
- python - FFTW f2py 多线程
- javascript - 如何根据 Firebase 身份验证状态重定向用户?
- sql - 有人可以在 postresql 中解释这个函数吗?这里没有使用连接,那么如何使用多个表?