如何将熊猫数据框中的字符串转换为float或int

时间:2019-11-20 11:20:38

标签: python pandas dataframe

我有一个csv文件,看起来像这样: enter image description here

第一列“多边形”的值是字符串。我想将它们转换为一系列嵌套列表,例如[[[1051381.5487,7320839.9048],[1051368.1571,7320819.7107],...]]。

为了便于理解,我仅采用该列的前5行:

polygon = pd.DataFrame(germ.iloc[:5,0])

看起来如此:

enter image description here

当我尝试采用第一行并应用.astype(float)/。astype(int)时,它向我返回此错误:

  

ValueError:无法将字符串转换为float:'[[[[1051381.5487 7320839.9048] \ n [1051368.1571 7320819.7107] \ n [1051343.0323 7320781.7935] \ n [1051309.9702 7320722.5248] \ n [1051296.0555 7320689.1256] \ n [1051278.0215 7320615.9572] \ n [1051263.9953 7320445.8771] \ n [1051260.4331 7320392.016] \ n [1051184.068 7320399.352] \ n [1051168.8172 7320476.7657] \ n [1051126.5157 7320604.76] \ n [1051098.3519 7320670.2061] \ n [1051051.9317 7320733.5289] \ n [1051014.9038 1051007.6265 7320843.1868] \ n [1050998.81 7320865.8909] \ n [1050991.3741 7320885.0811] \ n [1050986.9211 7320934.5052] \ n [1050962.6534 7320983.3505] \ n [1050949.0725 7321018.2951] \ n [1050944.6197 7321061.3489] \ n [1050947.8481 ] \ n [1050939.0538 7321143.0166] \ n [1050952.9687 7321178.7342] \ n [1050981.8005 7321221.7889] \ n [1050994.7134 7321231.4424] \ n [1051036.5695 7321236.8484] \ n [1051075.1974 7321267.1606] \ n [1051106.2556 7321282.0271] \ n [105112 1240.3235] \ n [1051152.7872 7321191.0907] \ n [1051195.8679 7321126.6056] \ n [1051245.0709 7321050.7303] \ n [1051252.9745 7321038.3741] \ n [1051312.308 7320946.8614] \ n [1051362.9027 7320868.7095] \ n [1051381.5487 7320839.9048] >

请帮助

1 个答案:

答案 0 :(得分:0)

好像值是字符串,这就是为什么您不能转换它们。

也许尝试

import ast
ast.literal_eval(insert your value/string here)

检查是否为字符串

def perfectEval(anonstring):
    try:
        ev = ast.literal_eval(anonstring)
        return ev
    except ValueError:
        corrected = "\'" + anonstring + "\'"
        ev = ast.literal_eval(corrected)
        return ev