列「A」を持つパンダのデータフレームがあります
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
列の「=」の前にテキストを使用して列にヘッダーを追加し、この新しいデータフレームを元のデータフレームに追加するにはどうすればよいですか? これらの2つの操作を1行で実行するPythonの方法はありますか?
ありがとう
を使用して extractall
e = dfc.A.str.extractall('([^;]+)=([^;]+)')
pd.Series(e.values[:, 1], [e.index.get_level_values(0), e.values[:, 0]]).unstack()
AB ABP AC AF AN AO
0 0.246154 39.3908 3 None None None
1 0.3 9.95901 2 0.333333 None None
2 0 0 6 1 6 86
3 0.461538 3.51141 2 None None None
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加