我有一个带有“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/