【发布时间】:2019-08-13 05:34:38
【问题描述】:
我有一个包含 81 列和大约 3000 行的数据框。下面是一个示例df。我需要将所有非零值转换为新列
TO Rubber Wood Plastic Toy Metal Paper Result
AAA 0 0 0 0 0 9 1
BBB 60 0 0 0 0 0 -1
CCC 0 0.8 0 0 0 0 1
DDD 0 0 0 40 0 0 1
EEE 0 0 7 0 0 0 1
FFF 0 0 0 0 10 0 -1
我已尝试将列名转换为新列,但无法为值做
df['Mat'] = (df.iloc[:, 1:82] != 0).idxmax(1)
我需要的结果:
TO Rubber Wood Plastic Toy Metal Paper Result WT Mat
AAA 0 0 0 0 0 9 1 60 Rubber
BBB 60 0 0 0 0 0 -1 0.8 Wood
CCC 0 0.8 0 0 0 0 1 7 Plastic
DDD 0 0 0 40 0 0 1 40 Toy
EEE 0 0 7 0 0 0 1 10 Metal
FFF 0 0 0 0 10 0 -1 9 Paper
我想删除不必要的列,然后最终结果应该是
To Wt Mat
AAA 60 Rubber
BBB 0.8 Wood
CCC 7 Plastic
DDD 40 Toy
EEE 10 Metal
FFF 9 Paper
【问题讨论】:
-
似乎数据不匹配 - 源与预期输出。
标签: python-3.x pandas numpy dataframe numeric