我有一个这样的df:
ID A1 A2 A3 A4 A5
1 1 2 3
2 1 2 3
3 2 1
4 3 1 2
5
对于每个ID,我有5列A1到A5(实际上我有更多),并且这些值是特定ID的最高优先级。
例如:ID 1将A1、A3和A5作为优先级,ID 3只有2个A2和A1,ID 5没有优先级
合成DF
ID Priority_1 Priority_2 Priority_3
1 A1 A3 A5
2 A1 A2 A4
3 A2 A1
4 A3 A5 A1
5
我尝试使用melt
和pivot
使用这个和这个以及更多的方法来实现相同的功能,但无法获得相同的结果df。
这方面的任何帮助或我这边的清晰度!!
使用DataFrame.melt
,通过DataFrame.sort_values
进行排序,并通过DataFrame.dropna
删除缺失的行,然后添加用于通过布尔索引
过滤的新列和Series.le
为小于或等于
和最后使用DataFrame.pivot
与DataFrame.add_prefix
,最后添加DataFrame.reindex
对于仅添加了缺失行ID
:
N = 3
df1 = df.melt('ID').sort_values(['ID','value']).dropna(subset=['value'])
df1['new'] = df1.groupby('ID').cumcount().add(1)
df1 = df1[df1['new'].le(N)]
df2 = df1.pivot('ID','new','variable').add_prefix('Priority_').reindex(df['ID'])
print (df2)
new Priority_1 Priority_2 Priority_3
ID
1 A1 A3 A5
2 A1 A2 A4
3 A2 A1 NaN
4 A3 A5 A1
5 NaN NaN NaN
非常感谢您抽出时间!
我有一个TestNG Dataprovider测试,如下所示: 输入csv 读者 测验 有许多输入文件,每个测试都包含一个优先级。我想单独运行优先级为1的测试。 在没有数据提供者的情况下,我可以使用下面的IMethodInterceptor过滤测试。 样品测试: 由于数据提供者的优先级是动态的,因此我无法根据优先级过滤测试。 不应执行其他测试,而应跳过其他测试。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 相同优先级中,按结合顺序计算。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。 基本的优先级需要记住: 指针最优,单目运算优于双目运算。如正负号。 先乘除(模),后加减。 先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (
我有一个在Google Cloud DataFlow上运行的Beam作业从BigQuery读取数据。当我运行作业时,作业需要几分钟的时间才能开始从(微小)表读取数据。结果表明,数据流作业发送的是一个BigQuery作业,该作业以批处理模式运行,而不是以交互模式运行。如何切换到在Apache Beam中立即运行?我在API中找不到一个方法来更改优先级。
问题内容: 我的网页包含: 引用的样式表包含: 我在ID中有一张表格,希望单元格有一些填充。但是,引用的样式表优先于内联样式。我可以通过Firebug直观地看到这一点。如果我关闭Firebug中的指令,则向左填充将生效。 我该如何上班? 问题答案: 正如其他人提到的那样,您有一个特异性问题。当确定两个规则中的哪一个优先时,CSS引擎会计算每个选择器中的s 数量。如果一个比另一个多,就使用它。否则,
代码生成器用于将Blockly的程序转换为JavaScript,Python,PHP,Lua,Dart等。在为新块编写代码生成器时,最具挑战性的问题是处理操作顺序,以使生成的代码按预期执行。 圆括号 考虑下面的块组装。 如果生成器不知道运算符的优先级,则生成的JavaScript代码将是: alert(2*3+4); 这显然是不正确的,因为乘法运算符会撕裂加法,自己获取“ 3”。一种解决方案是将每