我有这样的数据框
df1 = pd.DataFrame(columns=['ID', 'Divide', 'Object', 'List'], data=[ ['A, B', 2, 20, [0, 5]], ['C, D', 2, 40, [10, 15, 35]], ['E, F', 2, 20, [11, 15]], ['G', 1, 10, [1, 5]], ['H', 1, 10, ''], ['I, J', 2, 20, ''] ])
| | ID | Divide | Object | List |
|---:|:-----|---------:|---------:|:-------------|
| 0 | A, B | 2 | 20 | [0, 5] |
| 1 | C, D | 2 | 40 | [10, 15, 35] |
| 2 | E, F | 2 | 20 | [11, 15] |
| 3 | G | 1 | 10 | [1, 5] |
| 4 | H | 1 | 10 | |
| 5 | I, J | 2 | 20 | |
每个ID都需要有自己的行。但是,列表列包含属于每个ID的数据。 逻辑如下:
最后一张表如下所示:
| | ID | Divide | Object | List |
|---:|:-----|---------:|---------:|:-------|
| 0 | A | 2 | 20 | 0, 5 |
| 1 | B | 2 | 20 | |
| 2 | C | 2 | 40 | 10, 15 |
| 3 | D | 2 | 40 | 35 |
| 4 | E | 2 | 20 | |
| 5 | F | 2 | 20 | 11, 15 |
| 6 | G | 1 | 10 | 1, 5 |
| 7 | H | 1 | 10 | |
| 8 | I | 2 | 20 | |
| 9 | J | 2 | 20 | |
如果是列表,则可以使用explode将列表展平。但我不知道谁应该在数据帧中应用计算逻辑来解析细节。谢谢
df.ID_r==df["ID"].str.strip().str[:1]
输出
尝试分解ID和列表,然后根据ID的顺序有条件地进行过滤
输出:
带有附加列的DF1
过滤和重组后的DF2
您可以尝试以下方法:
相关问题 更多 >
编程相关推荐