![](/img/trans.png)
[英]How to take part of string value from column in DataFrame in Python Pandas?
[英]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.