【发布时间】:2016-10-13 05:10:39
【问题描述】:
我需要处理来自大数据 csv 的地理和统计数据。它包含来自地理行政和地理统计的数据。直辖市、区位、地统计基本区划、街区构成层次指标。
我必须为每个元素创建一个新列 ['data2'],即地理索引中数据的最大值,然后将每个块值除以该值。对于每个索引级别,索引级别值必须不为0,因为0索引级别值占了计算中未使用的其他类型的信息。
data1 data2
mun loc geo block
1 0 0 0 20 20
1 1 0 0 10 10
1 1 1 0 10 10
1 1 1 1 3 3/4
1 1 1 2 4 4/4
1 1 2 0 30 30
1 1 2 1 1 1/3
1 1 2 2 3 3/3
1 2 1 1 10 10/12
1 2 1 2 12 12/12
2 1 1 1 123 123/123
2 1 1 2 7 7/123
2 1 2 1 6 6/6
2 1 2 2 1 1/6
有什么想法吗?我尝试使用 for 循环,使用 reset_index() 转换列中的索引并按列和行值进行迭代,但计算需要很长时间,我认为这不是执行此类操作的正确方法。
另外,如果我想得到这样的面具怎么办,这样我就可以对每个级别进行计算。
mun loc geo block
1 0 0 0 False
1 1 0 0 False
1 1 1 0 True
1 1 1 1 False
1 1 1 2 False
1 1 2 0 True
1 1 2 1 False
1 1 2 2 False
mun loc geo block
1 0 0 0 False
1 1 0 0 True
1 1 1 0 False
1 1 1 1 False
1 1 1 2 False
1 2 0 0 True
1 2 2 0 False
1 2 2 1 False
mun loc geo block
1 0 0 0 True
1 1 0 0 False
1 1 1 0 False
1 1 1 1 False
1 1 1 2 False
2 0 0 0 True
2 1 1 0 False
2 1 2 1 False
【问题讨论】:
-
所以你需要删除数据框的前 4 行,因为在分层索引中是
0?在df2的第一行是 (0 / max(0,0,7.15,9.85)) ?在第二个(0/ ???)?您可以在输出中添加第二行和第三行的数字吗?谢谢。我觉得有点不清楚。 -
为清晰起见进行了编辑。我不需要删除那些行,我只是不需要对它们运行操作,而且,0 不仅出现在顶部,而且也出现在每个索引值的末尾,所以你有所有的块geo,以及 loc 的所有 geos,以及市镇的所有 loc。 0 索引指的是按索引计算的总数。我需要对每个 mun 的每个 loc 的每个 geo 的所有块运行 max 运算符,然后将该块的 data1 值除以最大值,尊重层次顺序。
-
感谢您的编辑。但我认为更好的是
value,value.. 提供示例数据,例如1,2,3,4,5然后带有数字的公式是 (1 / 4) 用于第一行,然后是 (2 / 2) ?为了清楚起见,您可以用数字和一些行(如有必要)扩展样本吗?谢谢。 -
感谢您的帮助。更多的编辑已经完成。放一些值为 0 的索引示例。此外,数据框包含 80 000 + 行分层组合。每个索引都有更多元素,但我只是出于示例目的放了一些。