如何将字符串列表转换为浮点数熊猫列表

贝拉

我有以下数据框(来自使用pd.read_csv的大型csv文件):

sal_vcf_to_df = pd.read_csv(sal_filepath, delimiter='\t', header = 0, index_col = False,
                            low_memory=False, usecols=['listA', 'Amino_Acid_Change', 'Gene_Name'])

sal_df_wo_na = sal_vcf_to_df.dropna(axis = 0, how = 'any')

sal_df_wo_na['listA'] = sal_df_wo_na['listA'].apply(lambda x : ast.literal_eval(x))
sal_df_wo_na['listA'] = sal_df_wo_na['listA'].apply(lambda x: list(map(float, x)))

我得到的数据框:

            listA                Amino_Acid_Change        Gene_Name
0  "['133', '115', '3', '1']"        Q637K                 ATM                   
1  "['114', '115', '2', '3']"        I111                  PIK3R1
2  "['51', '59', '1', '1']"          T2491                 KMT2C

我想将“ listA”列转换为浮点数列表。到目前为止,我已经尝试了几个步骤来做到这一点:

sal_df_wo_na['listA'] = sal_df_wo_na['listA'].apply(lambda x : ast.literal_eval(x))

然后:

sal_df_wo_na['DP4_freeBayes'] = sal_df_wo_na['DP4_freeBayes'].apply(lambda x: list(map(float, x)))

但是第一步之后我得到了以下警告:

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

有人知道如何解决警告或有更好的解决方案吗?

cs95

选项1
pd.eval - Works的高达100行的
一个非常快的那场可怕的寻找列进行转换的方式是摆脱所有的报价,然后调用pd.eval-

v = pd.eval(df.listA.str.replace("['\"]", '')).astype(float)

v
array([[ 133.,  115.,    3.,    1.],
       [ 114.,  115.,    2.,    3.],
       [  51.,   59.,    1.,    1.]])

将结果分配回-

df['listA'] = v
df

              listA Amino_Acid_Change Gene_Name
0  [133, 115, 3, 1]             Q637K       ATM
1  [114, 115, 2, 3]              I111    PIK3R1
2    [51, 59, 1, 1]             T2491     KMT2C

选项2
ast.literal_eval -的可靠设备
更新:pd.eval仅支持高达100行,所以越慢,更可靠的后备会使用ast.literal_eval-

from ast import literal_eval

df.listA = df.listA.str.replace("'", '').apply(literal_eval)
df 

              listA Amino_Acid_Change Gene_Name
0  [133, 115, 3, 1]             Q637K       ATM
1  [114, 115, 2, 3]              I111    PIK3R1
2    [51, 59, 1, 1]             T2491     KMT2C

至于SettingWithCopyWarning,最好的阅读来源是

简而言之,您正在做的是sal_df_wo_na通过从较大的数据框中提取切片/视图来创建内容,例如:

sal_df_wo_na = df[<some condition here>]

这可能会导致链式索引编制,熊猫对此予以警告。相反,您需要做类似的事情

sal_df_wo_na = df[<some condition here>].copy()

通过使用pd.DataFrame.copy功能创建切片的副本如果您的列中有对象,则将deep=True用作参数添加copy

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将字符串列表转换为浮点数数组?

如何将字符串列表转换为浮点数?

ValueError: 无法将字符串转换为浮点数---如何将字符串列表的列表转换为 numpy 数组类型浮点数?

如何将字符串列表转换为 c# 中的浮点数列表,unity?

将字符串列表转换为浮点数列表

如何将字符串的 ndarray 列表转换为浮点数

如何将列表字符串转换为浮点数

如何将带有空格分隔的浮点数的字符串列表转换为数据框

Sklearn尝试将字符串列表转换为浮点数

将大量的字符串列表转换为浮点数

将字符串列表转换为浮点数ndarray

Python:将字符串列表转换为带有空/无的浮点数

熊猫如何将所有字符串值转换为浮点数

Python-将字符串列表转换为浮点数-方括号和小数点导致问题

将函数应用于列的所有元素(字符串列表)以转换为浮点数

在F#中将字符串列表转换为浮点数/整数

熊猫将浮点数转换为字符串

在熊猫中,如何将一系列浮点数或无浮点数转换为带整数的字符串

如何将包含偶数个浮点数的列表转换为由大小为偶数一半的列表划分的字符串?

列表列表:循环将字符串转换为浮点数

将列表字符串转换为浮点数列表[pandas]

将列表列表中的字符串转换为浮点数

如何将字符串转换为浮点数?(温度转换器)

如何将字符串列表转换为LinkedHashMap?

将列表中的字符串转换为浮点数并删除无?

在列表中使用字典时将字符串转换为浮点数的问题

将列表中的字符串转换为浮点数

将列表中的字符串项转换为浮点数

如何使用熊猫将整个列字符串转换为数据框内的浮点数?