python - Pandas 在数据框中拆分一列并获取标题

标签 python pandas dataframe split

我有一个带有“A”列的 Pandas 数据框

dfc = pd.DataFrame( {"A": ['AB=0.246154;ABP=39.3908;AC=3', 'AB=0.3;ABP=9.95901;AC=2;AF=0.333333', 'AB=0;ABP=0;AC=6;AF=1;AN=6;AO=86', 'AB=0.461538;ABP=3.51141;AC=2']})

我想拆分数据框中的“A”列并获取新的数据框,例如

    A   AB  ABP AC  AF  AN  AO 
0   AB=0.246154;ABP=39.3908;AC=3    0.246154    39.3908 3   None    None    None
1   AB=0.3;ABP=9.95901;AC=2;AF=0.333333 0.3 9.95901 2   0.333333    None    None
2   AB=0;ABP=0;AC=6;AF=1;AN=6;AO=86 0   0   6   1   6   86
3   AB=0.461538;ABP=3.51141;AC=2    0.461538    3.51141 2   None    None    None

我尝试使用拆分数据框列,

dfc.A.str.split(';', expand = True)

但它提供了新的数据框,例如,

             0            1     2            3     4      5
0  AB=0.246154  ABP=39.3908  AC=3         None  None   None
1       AB=0.3  ABP=9.95901  AC=2  AF=0.333333  None   None
2         AB=0        ABP=0  AC=6         AF=1  AN=6  AO=86
3  AB=0.461538  ABP=3.51141  AC=2         None  None   None

如何使用列中“=”之前的文本向列添加标题,并将这个新数据框添加到原始数据框? 是否有 pythonic 方式在一行中完成这两个操作?

谢谢

最佳答案

尝试下面的方法,将A列的每个元素进行字符串拆分后,分别构造一个Series/dictionary,index/key会成为结果中的header(使用pd.concat拼接如果需要,带有新数据框的原始 A 列):

dfc.A.apply(lambda x: pd.Series(dict(s.split("=") for s in x.split(";"))))

#         AB       ABP  AC        AF     AN  AO
#0  0.246154   39.3908   3       NaN    NaN NaN
#1       0.3   9.95901   2  0.333333    NaN NaN
#2         0         0   6         1      6  86
#3  0.461538   3.51141   2       NaN    NaN NaN

关于python - Pandas 在数据框中拆分一列并获取标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42522945/

相关文章:

赋值前引用了Python局部变量 'charcheck',为什么?

python - "Error 1053: The service did not respond timely",无法从 Python 代码启动使用 cx_Freeze 创建的 Windows 服务

python - 使用另一列内的列名称 reshape 数据框

python - Pandas:有条件的 2 列的累积和

python - 如何获取 Pandas 中分组中最大数据的列的值?

python - 对日期和给定日期中的值数量进行排序

python - 在同一 df 中的 df col 行中仅选择一个值,以获取不同 val 的计算结果,并且一次仅对一个股票代码进行计算 df

python - Django 访问 ForeignKey 模型对象

python - 将 pandas 数据框列标签从浮点转换为整数

Python 3.x - 创建数据框并指定列名称