我有一个熊猫数据框,其中有两列,即纬度和经度。我试图提取随机的坐标集并将其转换为字符串列表,然后将其用于测试。
我的目标是获取每个元素具有以下格式的列表: 例如“ 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 ]'
有人能指出我正确的方向吗?预先感谢!
答案 0 :(得分:1)
你去了。使用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]
答案 1 :(得分:0)
def insert_document(document):
try:
result=collection.insert_one(document)
except ValidationError as ve:
abort(400, str(ve))
return result
输出
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()