gpt4 book ai didi

python - 在 Pandas 中拆分和转换字符串列

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:11 24 4
gpt4 key购买 nike

我正在处理一款软件的输出,该软件在单列中以 x、y、z 三元组的形式提供坐标。有没有办法将字符串分成三个独立的部分并一口气转换为 float ?例如,我知道我可以执行以下操作:

import pandas as pd

df = pd.DataFrame({'ID': {0: 3864, 1: 3864, 2: 3864, 3: 3864, 4: 3864},
'COORDFRONT': {0: '787.547 238.639 0.000', 1: '787.141 238.847 0.000', 2: '786.729 239.057 0.000', 3: '786.310 239.271 0.000', 4: '785.886 239.488 0.000'},
'COORDREAR': {0: '803.545 230.467 0.000', 1: '803.139 230.675 0.000', 2: '802.727 230.885 0.000', 3: '802.309 231.099 0.000', 4: '801.884 231.316 0.000'}})

df['Front_x'], df['Front_y'], df['Front_z'] = df['COORDFRONT'].str.split(' ').str

将三个字符串分开,但尝试举例

df['COORDFRONT'].str.split(' ').astype(float)

返回一个ValueError

最佳答案

使用split使用 expand=TrueDataFrame 并通过双 [] 分配给子集中的新列:

df[['Front_x', 'Front_y', 'Front_z']] = df['COORDFRONT'].str.split(expand=True).astype(float)
print (df)
COORDFRONT COORDREAR ID Front_x Front_y \
0 787.547 238.639 0.000 803.545 230.467 0.000 3864 787.547 238.639
1 787.141 238.847 0.000 803.139 230.675 0.000 3864 787.141 238.847
2 786.729 239.057 0.000 802.727 230.885 0.000 3864 786.729 239.057
3 786.310 239.271 0.000 802.309 231.099 0.000 3864 786.310 239.271
4 785.886 239.488 0.000 801.884 231.316 0.000 3864 785.886 239.488

Front_z
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0

如果列中没有 NaN 值是可能的,请使用列表理解:

L = [x.split() for x in df['COORDFRONT'].values.tolist()]
df[['Front_x', 'Front_y', 'Front_z']] = pd.DataFrame(L).astype(float)

关于python - 在 Pandas 中拆分和转换字符串列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49047244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com