- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试仅在一个级别上使用两个或多个索引重新索引数据帧,但使用 .reindex()
与 level
争论,正如我在 this answer 中看到的那样似乎什么都不做,而不是预期的行为。
这是我尝试使用的代码:
import pandas as pd
dtest = pd.DataFrame([['Martin', 'room_1', 3],
['Martin', 'room_2', 2],
['Georges', 'room_2', 4],
['Georges', 'room_1', 12]],
columns=['name', 'room', 'time_spent'])
dtest.set_index(['name', 'room',], inplace=True)
display(dtest)
print(dtest.reindex(
['room_1', 'room_2', 'room_3'], level=1, fill_value=0))
time_spent
name room
Martin room_1 3
room_2 2
Georges room_1 12
room_2 4
time_spent
name room
Martin room_1 3
room_2 2
room_3 0
Georges room_1 12
room_2 4
room_3 0
reindex()
字面上什么也没做。
reindex
的重要细节?还是东西坏了?
import pandas as pd
dtest2 = pd.DataFrame([['2020-01-05', 'Martin', 'room_1', 3],
['2020-01-05', 'Martin', 'room_2', 2],
['2020-01-06', 'Georges', 'room_2', 4],
['2020-01-06', 'Georges', 'room_1', 12]],
columns=['date', 'name', 'room', 'time_spent'])
dtest2.set_index(['date', 'name', 'room',], inplace=True)
print(dtest2)
time_spent
date name room
2020-01-05 Martin room_1 3
room_2 2
2020-01-06 Georges room_2 4
room_1 12
mux = pd.MultiIndex.from_product((dtest2.index.get_level_values(0).unique(),
dtest2.index.get_level_values(1).unique(),
['room_1', 'room_2', 'room_3']
))
final_first_solution = dtest2.reindex(mux,fill_value=0)
print(final_first_solution)
time_spent
2020-01-05 Martin room_1 3
room_2 2
room_3 0
Georges room_1 0
room_2 0
room_3 0
2020-01-06 Martin room_1 0
room_2 0
room_3 0
Georges room_1 12
room_2 4
room_3 0
room
.
final_second_solution = dtest2.unstack((0, 1)).reindex(['room_1', 'room_2', 'room_3'], fill_value=0)\
.stack((-2, -1)).swaplevel(i=-1, j=0).swaplevel(i=1, j=0).sort_index()
print(final_second_solution)
time_spent
date name room
2020-01-05 Martin room_1 3.0
room_2 2.0
room_3 0.0
2020-01-06 Georges room_1 12.0
room_2 4.0
room_3 0.0
unstack
已经创建了缺失的行,所以我们只需要使用
fillna
而不是
reindex
.以下代码
import pandas as pd
dtest3 = pd.DataFrame([['2020-01-05', 'Martin', 'room_1', 3],
['2020-01-06', 'Georges', 'room_2', 4]],
columns=['date', 'name', 'room', 'time_spent'])
dtest3.set_index(['date', 'name', 'room',], inplace=True)
print(dtest3)
final_third_solution = dtest3.unstack((0, 1)).fillna(0).stack((-2, -1)).reorder_levels([1,2,0]).sort_index()
print(final_third_solution)
time_spent
date name room
2020-01-05 Martin room_1 3.0
room_2 0.0
2020-01-06 Georges room_1 0.0
room_2 4.0
reorder_levels
而不是使用多个
swaplevel
的建议)。
.fillna(0).reindex(..., fill_value=0)
应该包含您想要完成和添加新元素的两种情况。
最佳答案
您需要使用 pd.MultiIndex.from_product()
为此创建一个多索引。和 get_level_values
:
mux=(pd.MultiIndex.from_product((dtest.index.get_level_values(0).unique()
,['room_1', 'room_2', 'room_3'])))
final=dtest.reindex(mux,fill_value=0)
time_spent
Martin room_1 3
room_2 2
room_3 0
Georges room_1 12
room_2 4
room_3 0
Index.union
到
from_product()
参数:
mux=(pd.MultiIndex.from_product((dtest.index.get_level_values(0).unique()
,dtest.index.get_level_values(1).unique().union(['room3'],sort=False))))
final=dtest.reindex(mux,fill_value=0)
time_spent
Martin room_1 3
room_2 2
room_3 0
Georges room_1 12
room_2 4
room_3 0
stack()
和
unstack()
与
swaplevel
:
final=dtest.unstack(0).reindex(['room_1', 'room_2', 'room_3']
,fill_value=0).stack().swaplevel().sort_index()
time_spent
name room
Georges room_1 12
room_2 4
room_3 0
Martin room_1 3
room_2 2
room_3 0
关于python - 仅重新索引 MultiIndex 数据帧的级别,reindex() 损坏了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59471286/
我已经在我的 PostgreSQL 数据库上启动了 REINDEX。在 GUI 中可以看到它处理了一些表,然后停止响应。看起来它仍在工作,即使在两个小时后也是如此。 GUI 没有响应,其最后一行显示:
我已经浏览了几次 _reindex api 文档,但不知道是否可行。将文档从源索引复制到目标索引后,是否也可以删除源文档? 这是我正在调用的当前 _reindex api 调用主体: { "sou
我做不到 重新索引 在 magento 2 .在谷歌之后,我得到了我们可以用 shell 命令重新索引的解决方案 php dev/shell/indexer.php reindexall 但它给出了错
我正在进行一项重新索引 Elasticsearch 索引的任务,以防发生任何更改。我可以找到2种方法来实现此目的,但是除非我缺少某些内容,否则它们对我来说都是相同的。 我正在从服务B的Postgres
我最近决定更改我的映射/设置,为此,我不得不重新索引所有文档(5M),但是,只重新索引了5m中的20个文档。 我用相同的拱形创建了一个新的索引,但是更改了许多映射/设置。 (将关键字类型更改为文本类型
因此,我们处于需要将Elasticsearch文档从一个索引重新索引到另一索引的情况。我们正在为此使用reindex API。尽管有时文档已经存在于目标索引中。设置version_type: "ext
我已经设置了目标索引 new_dest_index在运行 _reindex 之前操作,包括设置映射、分片计数、副本等。 我运行了下面的 POST 命令来从 source_index 复制所有文件至 n
我正在尝试使用reindex API进行Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/current/do
我尝试了该主题的几个示例,但没有结果。我正在读取一个 DataFrame,如下所示: Code,Counts 10006,5 10011,2 10012,26 10013,20 10014,17 10
我正在尝试使用以下行重新编制索引: POST _reindex { "source": { "index": "poi_201705" }, "dest": { "inde
这是我正在使用的代码: 将 pandas 导入为 pd test3 = pd.Series([1,2,3], index = ['a','b','c']) test3 = test3.reindex(
我在创建表时创建索引,然后将数据插入表中。 我认为当表中的数据已经被索引时,即使我删除或插入新数据也不需要运行 REINDEX。 这是正确的吗?或者每次,我都需要运行一个 REINDEX。 如果我需要
使用 Magento 1.6 我不得不对我的 catlog 进行一些批量更改,因此做了一个完整的产品导出,进行了更改,然后导入了修改后的文件。 之后有一些索引需要更新,除了“产品属性”索引之外的所有索
我可以搜索显示此错误消息“原因”的建议,但不能搜索如何解决它 - 每次我尝试通过连接 2 个现有列中的字符串值来向 pandas 数据框添加新列时都会遇到此问题。 例如: wind['timestam
包 x.x.x.repository.search 没有成功生成。我该如何解决它。 源代码是here 我只是运行 npm install -g generator-jhipster-elasticse
集成某些产品后,我在重新索引 Magento CMS 时遇到问题。 这是 shell 重新索引的日志 /usr/home/sinusi/public_html/_duplicateshop/shel
我的目标是重新索引具有 1000 万个分片的索引,以更改字段映射以促进重要术语分析。 我的问题是我在使用 NEST 库执行重新索引时遇到问题,并且文档(非常)有限。如果可能的话,我需要一个使用中的例子
假设我有两个数据框: import string import pandas as pd d = {'one': pd.Series(range(26), index = list(string.as
我正在尝试相对于索引的第二级重新索引数据框。我有一个数据框,其中索引的第一级是用户 ID,第二级是日期。例如: pd.DataFrame({ 'id': 3*['A'] + 5*['B'] + 4*[
我正在尝试使用 pandas reindex 函数填充我的时间序列数据中缺失的行。 我的数据如下: 100,2007,239,4,29.588,-30.851,-999.0,-999.0,-999.
我是一名优秀的程序员,十分优秀!