python - 将字母组合分成具有单个字母值的列 python pandas

标签 python pandas

使用python 3.8,pandas 1.1.4

我有一个看起来像这样的数据框

id             combination  
1      'A23B14C02R01D05E03F07G07H01I00J02K11L30'
2      'A11B14C02R01D05E03F07G07H01I00J02K11L30'
3      'A30B14C02R01D05E03F07G07H01I00J02K11L30'
...

我想要做的是将组合列分成仅包含一个字母的多个列。

所需的输出应如下所示:

id    A     B   C   R    D   E    F    G    H    I    J    K    L
1    23    14   02  01   05  03  07   07   01   00   02    11  30
2    11    14   02  01   05  03  07   07   01   00   02    11  30
3    30    14   02  01   05  03  07   07   01   00   02    11  30
...

提前致谢!

最佳答案

让我们尝试使用 findall 然后使用 explodecrosstab 进行数据透视

s = df.combination.str.findall('([a-zA-Z]+)(\d+)').explode()
df = df.join(pd.crosstab(index=s.index,columns=s.str[0],values=s.str[1],aggfunc='first'))
df
   id                              combination   A   B   C  ...   I   J   K   L   R
0   1  A23B14C02R01D05E03F07G07H01I00J02K11L30  23  14  02  ...  00  02  11  30  01
1   2  A11B14C02R01D05E03F07G07H01I00J02K11L30  11  14  02  ...  00  02  11  30  01
2   3  A30B14C02R01D05E03F07G07H01I00J02K11L30  30  14  02  ...  00  02  11  30  01
[3 rows x 15 columns]

关于python - 将字母组合分成具有单个字母值的列 python pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65501380/

相关文章:

python - .dropna() 增加内存使用

python - 单独目录中的 Cython 编译模块

python - 如何在pygame中将三角形旋转到一定角度?

python - 用 Pandas 合并两个数字

python - 将数据框中相同的列值分组,并将相同值的总和添加为新列

python - 如何将二级索引更改为 pandas DataFrame 中的二级列?

python - 如何在 django 模板中使用 django 模型对象?

python - 更改 *splat 和 **splatty-splat 运算符对我的对象执行的操作

python - 如何从字典列表创建稀疏 DataFrame

python - Pandas:将一列的值统一为另一列的每个值