pd.Series.to_list()改变dtype。

问题描述 投票:1回答:1

当我在colab上编程时,我一直遇到这个问题。

这是我的df

0                1
0    [2.7436598593417045e-05, 3.731542193080655e-05]
1    [8.279973504084787e-05, 2.145002145002145e-05]
2    [0.00022534319714215346, 0.0002031172259231674]
3    [3.239841667031943e-05, 2.7771297808289177e-05]
4    [0.00011311134356928321, 9.428422928088026e-05]

我想把df[1]中的数据转换成一个列表,这样我就可以把它输入到我的模型中。为此,我运行:

df[1].to_list()

然后我得到:

['[2.7436598593417045e-05, 3.731542193080655e-05]',
 '[8.279973504084787e-05, 2.145002145002145e-05]',
 '[0.00022534319714215346, 0.00020311722592316746]',
 '[3.239841667031943e-05, 2.7771297808289177e-05]',
 '[0.00011311134356928321, 9.428422928088026e-05]'] 

这是一个字符串的列表,我不能用它来输入到模型中。我一直在本地使用这段代码,而且工作得很好,但在 colab 上我得到了这个结果。有什么办法吗?我想要的结果是。

[[2.7436598593417045e-05, 3.731542193080655e-05],
 [8.279973504084787e-05, 2.145002145002145e-05],
 [0.00022534319714215346, 0.00020311722592316746],
 [3.239841667031943e-05, 2.7771297808289177e-05],
 [0.00011311134356928321, 9.428422928088026e-05]] 

python pandas numpy google-colaboratory
1个回答
2
投票

试试 ast.literal_eval

from ast import literal_eval

df[1].map(literal_eval).to_list()

[[2.7436598593417045e-05, 3.731542193080655e-05],
 [8.279973504084787e-05, 2.145002145002145e-05],
 [0.00022534319714215346, 0.00020311722592316746],
 [3.239841667031943e-05, 2.7771297808289177e-05],
 [0.00011311134356928321, 9.428422928088026e-05]]

0
投票

如果我用列表元素做一个数据框架。

In [135]: df = pd.DataFrame([[1,[1,3]],[2,[3,5]]])                                                     
In [136]: df                                                                                           
Out[136]: 
   0       1
0  1  [1, 3]
1  2  [3, 5]
In [137]: df.dtypes                                                                                    
Out[137]: 
0     int64
1    object
dtype: object
In [138]: df[1].to_list()                                                                              
Out[138]: [[1, 3], [3, 5]]

用列表的字符串做同样的事情,

In [139]: df1 = pd.DataFrame([[1,'[1,3]'],[2,'[3,5]']])                                                
In [140]: df1                                                                                          
Out[140]: 
   0      1
0  1  [1,3]
1  2  [3,5]
In [141]: df1.dtypes                                                                                   
Out[141]: 
0     int64
1    object
dtype: object
In [142]: df1[1].to_list()                                                                             
Out[142]: ['[1,3]', '[3,5]']

df1 看起来就像 df,只是列元素是字符串。

df1 框架的类型通常是由于保存 dfcsv,并重新加载它。

In [143]: df.to_csv('test.csv')                                                                        
In [144]: cat test.csv                                                                                 
,0,1
0,1,"[1, 3]"
1,2,"[3, 5]"

为了符合表格格式,它必须引用列表。

© www.soinside.com 2019 - 2024. All rights reserved.