我的数据框如下
const fs = require("fs");
fs.writeFile("hello?world.txt", "Hello World!", (error) => {
if (error) {
console.error("An error occurred:", error);
} else {
console.log("Task completed!");
}
});
我想按如下方式进行变换
+--------------------+
| 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]
答案 0 :(得分:1)
使用DataFrame.pivot
并将丢失的值替换为空字符串,然后将行转换为列表,并在range
和{{1}的最大值之间添加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]