Python将数组拆分为多个克隆

Python将数组拆分为多个克隆,python,pandas,split,Python,Pandas,Split,我正在尝试将包含数组数据的csv数据拆分为多列。这适用于大多数数组,因为它们是整数,但如果我尝试拆分以下数组(包含点值),我会遇到问题 这里是一个例子。假设将以下数组数据保存在名为“array”的列中 {58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5} 如果我采用以下方法 ```蟒蛇 拆分的数据=原始数据[“数组”]。str.split(“\D”,expand=True)。添加前缀(“setrw

我正在尝试将包含数组数据的csv数据拆分为多列。这适用于大多数数组,因为它们是整数,但如果我尝试拆分以下数组(包含点值),我会遇到问题

这里是一个例子。假设将以下数组数据保存在名为“array”的列中

{58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5 | 58.5}
如果我采用以下方法
```蟒蛇
拆分的数据=原始数据[“数组”]。str.split(“\D”,expand=True)。添加前缀(“setrwds\ux”)
我得到以下结果

   setrwds_x1  setrwds_x2  setrwds_x4  setrwds_x5  setrwds_x7  setrwds_x8  \
0             58           5          58           5          58           5   
1             58           5          58           5          58           5   
2             58           5          58           5          58           5   
3             58           5          58           5          58           5   
4             58           5          58           5          58           5   
5             58           5          58           5          58           5   
6             58           5          58           5          58           5   
7             58           5          58           5          58           5   
8             58           5          58           5          58           5   
9             58           5          58           5          58           5   
10            58           5          58           5          58           5   
11            58           5          58           5          58           5   
12            58           5          58           5          58           5   
13            58           5          58           5          58           5   
14            58           5          58           5          58           5   
15            58           5          58           5          58           5   
16            58           5          58           5          58           5   
17            58           5          58           5          58           5   
它将58.5分为两列,这是错误的。我需要保留58.5


你们有解决问题的建议吗?

试试这个
\D
在正则表达式中表示非数字,包括
,您只需要在
上显式拆分。您还需要使用
str[1:-1]

raw_data["Array"].str[1:-1].str.split("|",expand=True).add_prefix("setrwds_x")

用一个虚拟系列测试了这一点-

#Dummy series
d = ['{58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5}', 
     '{58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5}', 
     '{58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5 |58.5}']
dd = pd.Series(d)

out = dd.str[1:-1].str.split("|",expand=True).add_prefix("setrwds_x")
print(out)

为什么不按
|
分隔符拆分?我以前已经试过了。问题是,整个数组被保存为字符串,我应用您的代码行获得以下输出('无法解析位置0处的字符串“{58','发生在索引realwds_x0')在这种情况下,您的数据似乎有一些输入错误。似乎在编辑数组的位置缺少了一个
。在“|”符号之前有一个空格。希望它现在变得更清晰。只需添加一个空格。非常感谢。效果很好:)我欠你一个
  setrwds_x0 setrwds_x1 setrwds_x2 setrwds_x3 setrwds_x4 setrwds_x5  \
0      58.5       58.5       58.5       58.5       58.5       58.5    
1      58.5       58.5       58.5       58.5       58.5       58.5    
2      58.5       58.5       58.5       58.5       58.5       58.5    

  setrwds_x6 setrwds_x7 setrwds_x8 setrwds_x9 setrwds_x10 setrwds_x11  
0      58.5       58.5       58.5       58.5        58.5         58.5  
1      58.5       58.5       58.5       58.5        58.5         58.5  
2      58.5       58.5       58.5       58.5        58.5         58.5