代码之家  ›  专栏  ›  技术社区  ›  Irina

随机熊猫数据帧数据中的字符串列表

  •  0
  • Irina  · 技术社区  · 6 年前

    我有一个熊猫数据框架,有两列,纬度和经度。我正在尝试提取随机的坐标集,并将其转换为字符串列表,然后将其用于测试。

    我的目标是得到一个列表,其中每个元素都有以下格式: 例如,“34.30125,-118.45398”。

    我可以使用for循环,如下所示:

    coords = np.random.randint(len(df), size=100)
    addresses=list()
    for coord in coords:
        addresses.append ((str (df.iloc[coord, 0])) + ',' + (str (df.iloc[coord, 1]))
    

    )

    这是可行的,但我想有一个矢量化版本的代码我可以使用。这是我的尝试:

    coords = np.random.randint(len(df), size=100)
    addresses = (str (df.iloc[coords, 0].values)) + ',' + (str (df.iloc[coords, 1].values))
    

    这不起作用,因为结果是先列出所有纬度,然后列出所有经度。以下是错误输出的示例:

    '[33.96112 33.97383 33.99947 33.97956 34.15354 34.17544 33.73047 34.22336\n 34.07459 34.17304 34.25057 34.2081  34.20415 34.12729 33.97265 34.03505\n 34.09874 33.93781 33.78685 34.14127 34.04642 34.09625 34.24176 33.99518\n 34.05084 33.96508 34.27572 34.06566 33.76407 34.04516 34.039   34.06713],[-118.28861 -118.27594 -118.47455 -118.32636 -118.58882 -118.45547\n -118.28534 -118.53631 -118.36987 -118.37825 -118.60866 -118.62045\n -118.58971 -118.18886 -118.30977 -118.23742 -118.207   -118.24166\n -118.29918 -118.4998  -118.29458 -118.35162 -118.4445  -118.29393\n -118.51866 -118.40532 -118.45647 -118.30053 -118.26663 -118.49858 ]'
    

    有人能给我指个方向吗?事先谢谢!

    2 回复  |  直到 6 年前
        1
  •  1
  •   Pedro Martins de Souza Regeesh Chandran    6 年前

    你走吧。使用时只需删除对列的引用 iloc 添加一个 tolist() 功能:

    coords = np.random.randint(len(df), size=100)
    addresses = ((df.iloc[coords].values).tolist())
    

    在将结果转换为字符串时,有两个选项:

    1-把整个东西变成一根绳子:

    myPrettyString = (",".join(map(str, addresses)))
    

    2-将每个项目转换为单独的字符串。在这种情况下,我们将使用列表理解列出字符串:

    list=[]
    list+=[str(i) for i in addresses]
    
        2
  •  0
  •   Raunaq Jain    6 年前
    df = pd.DataFrame({'lat':[34.30125, 34.22328], 'long': [-118.45398, -118.48269]})    
    df =
        lat          long
    0   34.30125    -118.45398
    1   34.22328    -118.48269
    
    coords = np.random.randint(len(df), size=100)
    df =df.astype(str)
    addresses = df.iloc[coords, 0] + ',' + df.iloc[coords, 1]
    addresses.values.tolist()
    

    产量

    ['34.30125,-118.45398', '34.22328,-118.48269']