python - 根据特定条件将单元格值转换为数据框中的数组
问题描述
我的数据框如下
+--------------------+
| id | index | value |
|----|-------|-------|
| A | 1 | abc |
| B | 1 | def |
| B | 2 | abc |
| B | 4 | ghi |
| C | 2 | jkl |
| C | 4 | abc |
| D | 4 | def |
|----|-------|-------|
我想将其转换如下
+------------------------+
| id | array |
|----|-------------------|
| A | [abc, , , ] |
| B | [def, abc, , ghi] |
| C | [ , jkl, , abc] |
| D | [ , , , def] |
|----|-------------------|
index
数组的长度等于我想array[index-1]
用列中的字符串填充的value
列中的最大值
解决方案
使用DataFrame.pivot
with 将缺失值替换为空字符串,然后将行转换为列表,还添加withDataFrame.reindex
和最大值:range
1
index
df1 = (df.pivot('id','index','value')
.fillna('')
.reindex(range(1, df['index'].max() + 1), axis=1, fill_value='')
.apply(list, 1)
.reset_index(name='array'))
print (df1)
id array
0 A [abc, , , ]
1 B [def, abc, , ghi]
2 C [, jkl, , abc]
3 D [, , , def]
推荐阅读
- json - 如何删除数组中的对象?
- c++ - 集合和类没有命名类型
- google-analytics - Google Analytics API 高级部分的问题
- python - 如何标准化来自不同来源的 DICOM 图像?
- amazon-web-services - 可以在策略中使用什么条件来强制 S3 存储桶需要服务器端加密?
- css - 在 ngFor 循环中更改选定单选按钮的颜色
- python - 调用函数后,GCP Composer/Airflow 无法识别 DAG
- r - 运行循环,将 if else 条件应用于数据框的子集(或完整的数据框)
- docker - 无法从 gitlab 私有注册表(openshift)中提取图像
- scala - 什么时候在 Spark 中执行 .repartition(Int AnyValue),在读取 Parquet 之后(或)在 Parquet 上运行计算之后?