我需要從 pandas DataFrame 中的一個字串中提取數值。
假設DataFrame單元格如下(以字串形式存盤):
[1.234,2.345]
我可以用下面的方法得到第一個值:
print(df['column_name']。 str.extract('(d .d )',).astype('float')
輸出:
1.234。
現在,我的想法是要找到這兩個值:
print(df['column_name']。 str.extract('(d .d ),(d .d )',).astype('float')
但是輸出結果如下:
NaN NaN
預期輸出:
1.234 2.345
uj5u.com熱心網友回復:
為什么不直接使用pd.eval:
>>> df['Float'/span>] = pd. eval(df['String'])
>>> df
字串浮點
0 [1.234, 2.345] [1.234, 2.345]
1 [1.234, 2.345] [1.234, 2.345]
>>>
uj5u.com熱心網友回復:
如果你想用一個regex來提取浮點,你可以使用str.findall:
>>> df['column_name'/span>]。 str.findall(r'(-?d .?d )').str.join(')
0 1.234 2.345
名稱。字串, dtype: 物件
舊答案。
使用ast.literal_eval:
import ast
df = pd.DataFrame({'String': ['[1.234, 2.345]']})
df['Float'] = df['String'].apply(ast.literal_eval)
輸出:
>>> df
字串 浮點數
0 [1.234, 2.345] [1.234, 2.345]
>>> type(df.at[0, 'String'] [0] )
str
>>> type(df.at[0, 'Float'] [0] )
float
uj5u.com熱心網友回復:
你可以使用pandas.str.split,設定n=2。如果你想擴展DataFrame,你必須設定expand=True。
因此,結果可能看起來像:
your_dataframe['your_column_name'].str. split(",", n=2, expand=True).astype(float)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/323161.html
標籤:
