pandas - 将多列合并为一列作为python pandas中的列表
问题描述
如何创建一个新列 [ColumnA] 并将数据存储为列表而不是字符串?我需要使用 REST API POST 方法基于索引循环数据以供稍后处理。
Column1 Column2 Column3 Column4 ColumnA
Index
0 a 1 2 3 4 [1,2,3,4]
1 a 3 4 5 NaN [3,4,5]
2 b 6 7 8 NaN [6,7,8]
3 c 7 7 NaN NaN [7,7]
解决方案
输入数据中没有清除MultiIndex
或Index
输入数据,因此级别数按以下方式计算range
:
df['ColumnA'] = df.stack().astype(int).groupby(level=list(range(df.index.nlevels))).agg(list)
print (df)
Column1 Column2 Column3 Column4 ColumnA
Index
0 a 1 2 3.0 4.0 [1, 2, 3, 4]
1 a 3 4 5.0 NaN [3, 4, 5]
2 b 6 7 8.0 NaN [6, 7, 8]
3 c 7 7 NaN NaN [7, 7]
或者:
df['ColumnA'] = df.apply(lambda x: x.dropna().astype(int).tolist(), axis=1)
如果有空字符串:
print (df)
Column1 Column2 Column3 Column4
Index
0 a 1 2 3.0 4.0
1 a 3 4 5.0
2 b 6 7 8.0
3 c 7 7
df['ColumnA'] = df.apply(lambda x: x[x!= ''].astype(int).tolist(), axis=1)
print (df)
Column1 Column2 Column3 Column4 ColumnA
Index
0 a 1 2 3.0 4.0 [1, 2, 3, 4]
1 a 3 4 5.0 [3, 4, 5]
2 b 6 7 8.0 [6, 7, 8]
3 c 7 7 [7, 7]
推荐阅读
- ios - 页面更改控制当前页面点的半径
- object - 地图内的 Lodash _.omit 函数
- java - 处理:声音文件在循环中,但只想播放一次
- openoffice-calc - 将多个电子表格中的数据读入数据库
- image - Rust - 图像箱:保存图像缓冲区的问题
- javascript - 从 React.js 中的 json 文件中获取数据
- c# - 去掉 List 中 count 和 capacity 之间的距离
- c - 将“for”循环转换为“do..while”循环
- docker - 为什么我不能在 Dockerfile 中的 FROM 之后再次使用构建参数?
- c++ - 如何在 Qt3D 中显示图像