【发布时间】:2021-04-11 18:21:29
【问题描述】:
我正在创建一个 pandas 数据框,并希望通过分配和重新索引方法来创建一个新列。我正在做的方式是提取可能有“A”、“B”、“C”、“D”、“E”列的数据 我想创建一个新列,比如“XX”。 (当然,数据框中还有其他列,而且它很大,我只在下面展示这个示例)。 XX 列通常是 A->E 列的 OR 逻辑或最大值
喜欢
输入:
df
A B C D E
0 0 1 0 1
0 0 0 0 0
1 0 0 0 0
输出:
df
A B C D E XX
0 0 1 0 1 1
0 0 0 0 0 1
1 0 0 0 0 1
所以我的做法
ICOLS = ["A", "B", "C", "D", "E]
df = (df.assign(XX=df.reindex(ICOLS, axis=1).dropna().max(axis=1)).dropna(axis=1, how='all'))
脚本工作正常,但只有当我拥有从 A 到 E 的所有列时它才工作。在数据库中很多次(比如缺少 C 或 E 等),但我仍然希望具有相同的逻辑和 XX应该给出类似的输出。
所以如果数据库只有 A、B 和 E 行,那么:
输入:
df
A B E
0 0 1
0 0 0
1 0 0
输出:
df
A B E XX
0 0 1 1
0 0 0 1
1 0 0 1
我不确定如何以我在 inputCols ICOLS 列表中的方式实现这一点。如果对我试图解决的方向有帮助,我将不胜感激。任何帮助将不胜感激。谢谢
【问题讨论】:
-
xx的预期输出是否正确?根据描述和示例代码,我认为每个输出的第二行应该是0?
标签: python pandas list indexing