我正在寻找一种方法来使用 pandas 和 python 将 excel 工作表中具有已知列名称的多个列组合成一个新的单个列,并保留所有重要信息,如下例所示:
输入:
ID,tp_c,tp_b,tp_p
0,transportation - cars,transportation - boats,transportation - planes
1,checked,-,-
2,-,checked,-
3,checked,checked,-
4,-,checked,checked
5,checked,checked,checked
期望的输出:
ID,tp_all
0,transportation
1,cars
2,boats
3,cars+boats
4,boats+planes
5,cars+boats+planes
ID 为 0 的行包含对该列内容的描述。理想情况下,代码会解析第二行中的描述,查看“-”并将这些值连接到新的“tp_all”列中。
最佳答案
这很有趣,因为它是一个反向的 get_dummies
...
我想我会手动修改列名,这样你就有了一个 bool 数据框:
In [11]: df1 # df == 'checked'
Out[11]:
cars boats planes
0
1 True False False
2 False True False
3 True True False
4 False True True
5 True True True
现在你可以使用 apply with zip:
In [12]: df1.apply(lambda row: '+'.join([col for col, b in zip(df1.columns, row) if b]),
axis=1)
Out[12]:
0
1 cars
2 boats
3 cars+boats
4 boats+planes
5 cars+boats+planes
dtype: object
现在您只需调整 header 即可获得所需的 csv。
如果有更少的手动方式/更快地进行反向操作会很好 get_dummies
...
关于python - 编辑然后将多个列的值连接成一个列(pandas,python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24044734/