例如,我的 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 列的單元格中(代替字串陣列) - 我該怎么做?
uj5u.com熱心網友回復:
用 pd.eval
df['X'] = pd.eval(df['X'])
# Setup: df = pd.DataFrame({'X': ['[0, 1, 2]', '[3, 4, 5]']})
>>> df
X
0 [0, 1, 2]
1 [3, 4, 5]
# Before pd.eval
>>> df['X'][0]
'[0, 1, 2]'
>>> type(df['X'][0])
str
# After pd.eval
>>> df['X'][0]
[0, 1, 2]
>>> type(df['X'][0])
list
uj5u.com熱心網友回復:
要將串列 ( str_lst) 的每個字串表示形式轉換為串列,您應該使用ast.literal_eval. 然后你只需要索引每個串列的第一個元素,即ast.literal_eval(str_lst).
要將此邏輯應用于每個str_lst“X”列,您可以使用Series.map.
import ast
df['X'] = df['X'].map(lambda str_lst: ast.literal_eval(str_lst)[0])
uj5u.com熱心網友回復:
import ast
df['a'].apply(ast.literal_eval).str[0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/356547.html
