首页 > 解决方案 > 从带有混合分隔符的 pandas DataFrame 中挑选出值

问题描述

我有一个如下所示的 DataFrame:

df.head()
0    x=2.875,y=-69.625,z=1071.6
1      x=1.625,y=-71.875,z=1071
2     x=5.75,y=-68.625,z=1071.2
3     x=3.75,y=-68.875,z=1072.2
4       x=-1.5,y=-71.625,z=1066

我想从中创建一个新的 DataFrame,其中 x、y、z 列包含这些值。我怎样才能做到这一点?到目前为止,我的尝试是这样的:

d0 = df.str.split(',', n=2, expand=True)
x = d0[0].str.split('=', expand=True)
x.head()
0    2.875
1    1.625
2    5.750
3    3.750
4   -1.500

但这只给出了一列,我想知道是否有更好的方法。

标签: pythonpandas

解决方案


对字典列表使用嵌套列表推导并传递给DataFrame构造函数:

df1 = pd.DataFrame([dict([y.split('=') for y in x.split(',')]) for x in df])
print (df1)
       x        y       z
0  2.875  -69.625  1071.6
1  1.625  -71.875    1071
2   5.75  -68.625  1071.2
3   3.75  -68.875  1072.2
4   -1.5  -71.625    1066

推荐阅读