如何用熊猫将多行组合成一行[重复]
Posted
技术标签:
【中文标题】如何用熊猫将多行组合成一行[重复]【英文标题】:How to combine multiple rows into a single row with pandas [duplicate] 【发布时间】:2016-07-23 09:49:16 【问题描述】:我需要将多行合并为一行,这将是简单的空格连接
View of my dataframe:
tempx value
0 picture1 1.5
1 picture555 1.5
2 picture255 1.5
3 picture365 1.5
4 picture112 1.5
我希望像这样转换数据框:(空格分隔) 温度值
Expected output:
tempx value
0 picture1 picture555 picture255 picture365 picture112 1.5
or
as a python dict
1.5:picture1 picture555 picture255 picture365 picture112
我尝试过的:
df_test['tempx']=df_test['tempx'].str.cat(sep=' ')
这可行,但它组合了所有列中的行,如下所示:
tempx value
0 picture1 picture555 picture255 picture365 picture112 1.5
1 picture1 picture555 picture255 picture365 picture112 1.5
2 picture1 picture555 picture255 picture365 picture112 1.5
3 picture1 picture555 picture255 picture365 picture112 1.5
4 picture1 picture555 picture255 picture365 picture112 1.5
有什么优雅的解决方案吗?
【问题讨论】:
如果有基于值列有条件组合的解决方案 您的预期输出是什么,您可以编辑并举例说明您的问题吗?是否要按值列“分组”,以便在每个值中加入图片名称? 我已经使用 pandas 应用了 grouby,下一步我想做的是为每个值属性设置一行。请检查预期输出 【参考方案1】:你可以使用groupby
和apply
函数join
:
print df.groupby('value')['tempx'].apply(' '.join).reset_index()
value tempx
0 1.5 picture1 picture555 picture255 picture365 pict...
【讨论】:
非常感谢,成功了! 很高兴能帮到你!祝你好运! @jezrael 嗨,有没有办法合并多个列?而不是tempx
我还想合并更多的列怎么做?我正在尝试df.groupby('value')['tempx','second_column','third_column'].apply(' '.join).reset_index()
,但我只收到分组的列名称
@sygneto - 使用df.groupby('value')['tempx','second_column','third_column'].agg(' '.join).reset_index()
谢谢,我又忘记了.agg ^^,很高兴有你在这里以上是关于如何用熊猫将多行组合成一行[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pandas:如何根据一个公共键将多行数据组合成一行?
如何在 Oracle 中将多行组合成逗号分隔的列表? [复制]