2017-05-09 52 views
-1

我有这样的数据帧: enter image description here如何以数组形式放置数据帧的值?

我希望有提取所有值列在阵列的形式的数据,其输出应为: [楠,47,47.9,48.6]

任何人都可以分享我的想法?

+0

的可能的复制[摆脱熊猫数据帧列的列表(http://stackoverflow.com/questions/22341271/get-list-from-pandas-dataframe-column) – McGrady

回答

2

使用valuesnumpy array + numpy.ndarray.tolistlist

L = df['value'].values.tolist() 
#alternative 
#L = df['value'].tolist() 

或转换到list

L = list(df['value']) 

编辑:

看来你需要转换为float首先astype

df = pd.DataFrame({'value':['nan','47','47.9','48.6']}) 
print (df) 
    value 
0 nan 
1 47 
2 47.9 
3 48.6 

L1 = df['value'].values.tolist() 
print (L1) 
['nan', '47', '47.9', '48.6'] 

L2 = df['value'].astype(float).values.tolist() 
print (L2) 
[nan, 47.0, 47.9, 48.6] 

,因为如果float所有值获得不同的输出 - 47.047

df = pd.DataFrame({'value':[np.nan,47,47.9,48.6]}) 
    value 
0 NaN 
1 47.0 
2 47.9 
3 48.6 

L = df['value'].values.tolist() 
print (L) 
[nan, 47.0, 47.9, 48.6] 

EDIT1:

如果astype返回错误如:

ValueError: could not convert string to float: 'a'

则需要to_numeric与参数errors='coerce'对于非数值转换为NaN

df = pd.DataFrame({'value':[np.nan,47,47.9,48.6, 'a']}) 
print (df) 
    value 
0 NaN 
1 47 
2 47.9 
3 48.6 
4  a 

print (pd.to_numeric(df['value'], errors='coerce')) 
0  NaN 
1 47.0 
2 47.9 
3 48.6 
4  NaN 
Name: value, dtype: float64 

L = pd.to_numeric(df['value'], errors='coerce').values.tolist() 
print (L) 
[nan, 47.0, 47.9, 48.6, nan] 
相关问题