python - 编辑然后将多个列的值连接成一个列(pandas,python)

标签 python excel pandas

我正在寻找一种方法来使用 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/

相关文章:

python - 如何结合两个 pd 数据框,根据分数重新排名并返回整行以获得最高排名?

php - 如何在laravel 5中存储excel表格中的图像

c# - 导出到 excel 数据时出错 : ' ' , 十六进制值 0x07,是使用 c# 的无效字符

vba - Excel VBA 在单元格和范围函数中使用变量

python-3.x - python pandas 获取第一个元素包含字符串的列

python - 你怎么能 "clone"一个conda环境进入root环境?

python - Python OpenCV:ValueError:太多值无法解包

python - 数据帧的频率

python - pandas 滚动应用于数据框

python - 在 great_expectations 中使用腌制的 pandas 数据框作为数据 Assets