簡體   English   中英

從熊貓數據框中的字符串數組中獲取第一個數值

[英]Take first numeric value from string array in pandas dataframe

例如,我的 Pandas 數據框中的列采用以下格式:

df['X']:

0      [0.8242424242424241, 1.511111111111111, 2.9191...
1      [1.236363636363636, 2.438383838383838, 3.09090...
2                [1.064646464646464, 2.5757575757575752]
3      [0.583838383838383, 1.373737373737373, 2.02626...
4      [0.7898989898989891, 1.751515151515151, 2.6444...
                             ...                        
135    [1.236363636363636, 1.751515151515151, 2.26666...
136    [1.202020202020202, 2.1292929292929292, 2.7818...
137    [0.583838383838383, 1.476767676767676, 3.15959...
138    [1.236363636363636, 2.61010101010101, 3.090909...
139    [1.339393939393939, 2.7818181818181813, 3.1252...
Name: X, Length: 140, dtype: object

例如,其中df['X'][0]是一個完整的字符串數組,如下所示:

'[0.8242424242424241, 1.511111111111111, 2.919191919191919]'

本質上,每個條目都是一個數組/向量,並且作為一個整體,是一個字符串(請注意,不僅僅是單個數值是字符串,而是整個數組)

我希望能夠只取字符串向量/數組中的第一個數值並將其放在 pandas 列的單元格中(代替字符串數組) - 我該怎么做?

import ast
df['a'].apply(ast.literal_eval).str[0]

要將列表 ( str_lst ) 的每個字符串表示形式轉換為列表,您可以使用ast.literal_eval 然后你只需要索引第一個元素,即ast.literal_eval(str_lst)[0]

import ast 

df['X'] = df['X'].map(lambda str_lst: ast.literal_eval(str_lst)[0])

使用pd.eval

df['X'] = pd.eval(df['X'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM