python - 在python中重塑数据框的列值
问题描述
我有一个像下面这样没有标题的数据框。
当前df:
Col 0 Col 1 Col 2 Col3
2345 abcd mobile oneplus
4567 abbb internet explorer
mozilla 2345 cccc dddd
eeee bbbb 1234 hello
我希望将数字值(即ID
)作为第一列(列索引 0)。
如果在任何一行中,数字值移动到Col 1
,组合Col 1
和Col2
值并将其放入Col 1
,然后将Col3
值放入Col2
,然后Col0
将下一行的值作为上一行的Col3
。
预期输出如下:
Col 0 Col 1 Col 2 Col3
2345 abcd mobile oneplus
4567 abbbinternet explorer mozilla
2345 ccccdddd eeee bbbb
1234 hello
非常感谢帮助!谢谢 ..
解决方案
stack
您可以使用,set_index
和这样做unstack
:
from io import StringIO
txt = StringIO("""2345 abcd mobile oneplus
4567 abbb internet explorer
mozilla 2345 cccc dddd
eeee bbbb 1234 hello""")
df = pd.read_csv(txt, header=None, sep='\s+')
df = df.stack().reset_index(drop=True)
df1 = df.to_frame().set_index(df.str.isnumeric().cumsum())
df_out = df1.set_index(df1.groupby(level=0).cumcount(), append=True)[0].unstack()
df_out
输出:
0 1 2 3 4
1 2345 abcd mobile oneplus NaN
2 4567 abbb internet explorer mozilla
3 2345 cccc dddd eeee bbbb
4 1234 hello NaN NaN NaN
推荐阅读
- highcharts - Highchart:如果两个气泡在气泡图中相交或彼此靠近,则不会显示气泡标题
- kubernetes - 如何挂载 kubernetes.io/dockerconfigjson
- filesize - du 摘要不等于元素的总和
- html - 如何以角度设置嵌套组件的样式?
- python - 按索引有效地将多行添加到文件中
- neo4j - Neo4j Cypher 查询解释相同,但仅针对一个生成警告
- powershell - 试图获取不同服务器上指定进程的cpu使用率
- node.js - 上传图片时,Nodejs 内存填得太快了 ~10MB
- ruby-on-rails - 用户退出时如何重定向到主页(root)?
- python - Omnet ++简单模块的C ++代码中python嵌入代码中的分段错误错误