【发布时间】:2020-08-07 12:33:27
【问题描述】:
请在下面的数据中找到索引名称重复 3 到 5 次的数据,因为月度报告不正确地合并了 3 个月,然后才交给我。
Name Score Rating
Peralta 0 40
Peralta 20 0
Peralta 0 0
Amy 0 40
Amy 20 40
Amy -20 40
Terry 0 0
Terry -20 40
Terry 0 -40
Gina 20 0
Gina 0 0
Gina -20 40
到目前为止,我只提取了列名,如最后的代码所示。但我无法将 “列名” 和 “单元格值” 放在一起。
我需要按以下格式汇总数据: (结果可以有制表符或逗号,视您的喜好而定。)
### Final Result
# IndexName [col_name, cell_value] [sum of positive numbers, result] [sum of negative numbers, result]
Peralta [Rating, 40] [Score, 20] [Sum_Total_of_positive_numbers, 60]
Amy [Rating, 40] [Score, 20] [Rating, 40] [Score, -20] [Rating, 40] [Sum_Total_of_positive_numbers, 140] [Sum_Total_of_negative_numbers, -20]
Terry [Score, -20] [Rating, 40] [Rating, -40] [Sum_Total_of_positive_numbers, 40] [Sum_Total_of_negative_numbers, -60]
Gina [Score, 20] [Score, -20] [Rating, 40] [Sum_Total_of_positive_numbers, 60] [Sum_Total_of_negative_numbers, -20]
所有用于汇总数据的标准 pandas 函数都没有帮助,和/或可用于以上述格式提供摘要的其他库不存在。
以下代码实际上有助于降低列名,但是与该列+行相关的单元格的值没有出现..
for k, v in dff_dict.items(): # k: name of index, v: is a df
check = v.columns[(v == 20).any()]
if len(check) > 0:
print((k, check.to_list()), file=open("output.txt", "a"))
请问有什么方法可以实现第二张表中显示的“最终结果”? (最终结果不一定是任何特定格式,如数据框或表格) 谢谢。。
注意:
原始数据可能包含20多列数百行,但我已经对数据进行了简化,所以请不要只限于几行或几列。'
最后 2 个括号内的值显示了该行中所有正数和负数的总和,在降低值后。正数和负数分开。
这里有一篇有用的文章(Closest Possible answer),但是我需要 [column_name, value] 而不仅仅是 [row:value]
【问题讨论】:
-
您的“最终结果”似乎不是表格格式,您希望将其作为字典列表吗?
-
亲爱的@Jimmar,是的,请,它可以是任何格式,根本不需要是熊猫数据框或任何表格。因为它最终会被非程序员阅读和分析完全没有编码知识,也对excel没有任何兴趣..他们只需要格式的数据,最后一项是所有正数和负数的总和......欢迎任何格式的解决方案
-
@Jimmar 请在上面找到一个小修改,其中 + 和 - 的总和分别用括号括起来......再次感谢你......
-
为了清楚起见,请编辑此问题。存在语法问题,我不知道所需的输出是什么
-
@anon01 期望的结果是第二个编码部分,从评论开始 "### Final Result"... 结果再次显示在第二个评论下方编码部分...