【发布时间】:2018-12-05 16:52:41
【问题描述】:
Python 2.7
我有一个包含两列的数据框,coordinates 和 loc。 coordinates 包含 10 个 lat/long 对,而 loc 包含 10 个字符串。
以下代码导致 ValueError,数组的长度不同。好像我写的条件不正确。
lst_10_cords = [['37.09024, -95.712891'], ['-37.605, 145.146'], ['43.0481962, -76.0488458'], ['29.7604267, -95.3698028'], ['47.6062095, -122.3320708'], ['34.0232431, -84.3615555'], ['31.9685988, -99.9018131'], ['37.226582, -95.70522299999999'], ['40.289918, -83.036372'], ['37.226582, -95.70522299999999']]
lst_10_locs = [['United States'], ['Doreen, Melbourne'], ['Upstate NY'], ['Houston, TX'], ['Seattle, WA'], ['Roswell, GA'], ['Texas'], ['null'], ['??, passing by...'], ['null']]
df = pd.DataFrame(columns=['coordinates', 'locs'])
df['coordinates'] = lst_10_cords
df['locs'] = lst_10_locs
print df
df = df[df['coordinates'] != ['37.226582', '-95.70522299999999']] #ValueError
错误信息是
文件“C:\Users...\Miniconda3\envs\py2.7\lib\site-packages\pandas\core\ops.py”,林 e 1283,在包装中 res = na_op(值,其他) 文件“C:\Users...\Miniconda3\envs\py2.7\lib\site-packages\pandas\core\ops.py”,林 e 1143,在 na_op 结果 = _comp_method_OBJECT_ARRAY(op, x, y) 文件“C:...\biney\Miniconda3\envs\py2.7\lib\site-packages\pandas\core\ops.py”,林 e 1120,在 _comp_method_OBJECT_ARRAY 结果 = libops.vec_compare(x, y, op) 文件“pandas/_libs/ops.pyx”,第 128 行,在 pandas._libs.ops.vec_compare ValueError:数组的长度不同:10 vs 2
我的目标是实际检查并消除坐标列中等于列表[37.226582, -95.70522299999999] 的所有条目,所以我希望df['coordinates'] 打印出[['37.09024, -95.712891'], ['-37.605, 145.146'], ['43.0481962, -76.0488458'], ['29.7604267, -95.3698028'], ['47.6062095, -122.3320708'], ['34.0232431, -84.3615555'], ['31.9685988, -99.9018131'], ['37.226582, -95.70522299999999'], ['40.289918, -83.036372']
我希望这份文档会有所帮助,尤其是显示的部分:
“您可以使用与 DataFrame 的索引长度相同的布尔向量从 DataFrame 中选择行(例如,从 DataFrame 的列之一派生的东西):”
df[df['A'] > 0]
所以看起来我的语法不太正确......但我被卡住了。如何编写为某列的单元格值设置条件并返回仅包含符合该条件的单元格的行的数据框?
【问题讨论】: