值不在Pandas的范围内

2024-06-11 17:35:07 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码:

  import pandas as pd
    tmp_data=pd.read_csv("../data/geo/public.geo_commune.csv",sep=';')

#id;created;uuid;modified;name;geohash_file;gps_lat_file;gps_long_file;geohash_bing;gps_lat_bing;gps_long_bing;geohash_goog;gps_lat_goog;gps_long_goog;code_insee;code_cadastre;code_postal;departement;region;code_postal2
print(tmp_data[tmp_data['id'] == 6217])
communes = [
    Commune(
        id = tmp_data.loc[row]['id'],
        uuid = tmp_data.loc[row]['uuid'],
        name = tmp_data.loc[row]['name'],
        geohash_file = tmp_data.loc[row]['geohash_file'],
        gps_lat_file = tmp_data.loc[row]['gps_lat_file'],
        gps_long_file = tmp_data.loc[row]['gps_long_file'],
        code_insee = tmp_data.loc[row]['code_insee'],
        code_postal = tmp_data.loc[row]['code_postal'],
        code_postal2 = tmp_data.loc[row]['code_postal2'],
    )
    for row in tmp_data['id']
]
Commune.objects.bulk_create(communes)

我有一个错误:

Traceback (most recent call last): File "/home/bussiere/.local/share/virtualenvs/GeoTransport-6Rxd3Krq/lib/python3.7/site-packages/pandas/core/indexes/range.py", line 351, in get_loc return self._range.index(new_key) ValueError: 6217 is not in range

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "importPandasGeo.py", line 34, in for row in tmp_data['id'] File "importPandasGeo.py", line 34, in for row in tmp_data['id'] File "/home/bussiere/.local/share/virtualenvs/GeoTransport-6Rxd3Krq/lib/python3.7/site-packages/pandas/core/indexing.py", line 895, in getitem return self._getitem_axis(maybe_callable, axis=axis) File "/home/bussiere/.local/share/virtualenvs/GeoTransport-6Rxd3Krq/lib/python3.7/site-packages/pandas/core/indexing.py", line 1124, in _getitem_axis return self._get_label(key, axis=axis) File "/home/bussiere/.local/share/virtualenvs/GeoTransport-6Rxd3Krq/lib/python3.7/site-packages/pandas/core/indexing.py", line 1073, in _get_label return self.obj.xs(label, axis=axis) File "/home/bussiere/.local/share/virtualenvs/GeoTransport-6Rxd3Krq/lib/python3.7/site-packages/pandas/core/generic.py", line 3739, in xs loc = index.get_loc(key) File "/home/bussiere/.local/share/virtualenvs/GeoTransport-6Rxd3Krq/lib/python3.7/site-packages/pandas/core/indexes/range.py", line 353, in get_loc raise KeyError(key) from err KeyError: 6217

但这句话很管用:

print(tmp_data[tmp_data['id'] == 6217])

这让我觉得:

        id                        created                                 uuid  ... departement region code_postal2
1795  6217  2020-01-08 17:20:08.091659+01  78DA163B1494401CBD6832AF048406FF257  ...         NaN    NaN          NaN

[1 rows x 20 columns]



>head public.geo_commune.csv 
id;created;uuid;modified;name;geohash_file;gps_lat_file;gps_long_file;geohash_bing;gps_lat_bing;gps_long_bing;geohash_goog;gps_lat_goog;gps_long_goog;code_insee;code_cadastre;code_postal;departement;region;code_postal2
3994;2020-01-08 07:56:04.095098+01;820B67C3D19D4C7DA4281E3DE4907113746;2020-01-12 12:12:53.151271+01;Argenvilliers;u08dw5bwzrdw;48.273752534979;0.967798168724;;;;;;;28010;;28480;;;
3842;2020-01-08 07:50:18.685592+01;1621BCFD0E9247499CC25AE834ED6A26957;2020-01-12 12:12:50.884786+01;Ardelu;u0975d2j33un;48.353115000000;1.911680371429;;;;;;;28009;;28700;;;
3844;2020-01-08 07:50:19.457564+01;390CA0A03C0B4AB1B14F8FB8BEB5F52E984;2020-01-12 12:12:50.892135+01;Mondonville Saint Jean;u0971s3k46v2;48.363891181818;1.825550795455;;;;;;;28257;;28700;;;
3845;2020-01-08 07:50:20.180927+01;0B34E895B5894E07A2965801DF7D7D24402;2020-01-12 12:12:50.895932+01;Saint Lubin De Cravant;u08v0g92bxy0;48.710802785714;1.089392690476;;;;;;;28346;;28270;;;
3846;2020-01-08 07:50:20.886304+01;0AB2686A6E944B2EB62B6152066C9B34264;2020-01-12 12:12:50.899976+01;Vierville;u0977847xg6t;48.384408230769;1.915047134615;;;;;;;28408;;28700;;;
3848;2020-01-08 07:50:22.424892+01;8076EF50310E4F0E82E6E8693CF2BDB7970;2020-01-12 12:12:50.908298+01;Allainville;u08vjmmyr11h;48.721324400000;1.293598661538;;;;;;;28003;;28500;;;
3849;2020-01-08 07:50:23.167292+01;A0B55E8630654823AA705332272D376E457;2020-01-12 12:12:50.912788+01;Barmainville;u096s2x71u1h;48.255236869565;1.954613173913;;;;;;;28025;;28310;;;
3850;2020-01-08 07:50:24.301801+01;29277930A4B84DAEB2958333D646061B353;2020-01-12 12:12:50.917579+01;Cernay;u08g5zuvztd6;48.383432805970;1.226330447761;;;;;;;28067;;28120;;;
3852;2020-01-08 07:50:25.98965+01;F9D27E5124CB49FDABFC4325686EB559383;2020-01-12 12:12:50.926628+01;Mereglise;u08fdyvur73c;48.289779263158;1.183747175439;;;;;;;28242;;28120;;;

Tags: inpyiddatalinecodeloctmp
1条回答
网友
1楼 · 发布于 2024-06-11 17:35:07

您可以浏览行索引

communes = [
    Commune(
        id = tmp_data.loc[row]['id'].tolist(),
        uuid = tmp_data.loc[row]['uuid'].tolist(),
        name = tmp_data.loc[row]['name'].tolist(),
        geohash_file = tmp_data.loc[row]['geohash_file'].tolist(),
        gps_lat_file = tmp_data.loc[row]['gps_lat_file'].tolist(),
        gps_long_file = tmp_data.loc[row]['gps_long_file'].tolist(),
        code_insee = tmp_data.loc[row]['code_insee'].tolist(),
        code_postal = tmp_data.loc[row]['code_postal'].tolist(),
        code_postal2 = tmp_data.loc[row]['code_postal2'].tolist(),
    )
    for row in range(tmp_data.shape[0])
]

或者你可以查一下身份证

communes = [
    Commune(
        id = tmp_data.loc[tmp_data["id"]==i]['id'].iloc[0],
        uuid = tmp_data.loc[tmp_data["id"]==i]['uuid'].iloc[0],
        name = tmp_data.loc[tmp_data["id"]==i]['name'].iloc[0],
        geohash_file = tmp_data.loc[tmp_data["id"]==i]['geohash_file'].iloc[0],
        gps_lat_file = tmp_data.loc[tmp_data["id"]==i]['gps_lat_file'].iloc[0],
        gps_long_file = tmp_data.loc[tmp_data["id"]==i]['gps_long_file'].iloc[0],
        code_insee = tmp_data.loc[tmp_data["id"]==i]['code_insee'].iloc[0],
        code_postal = tmp_data.loc[tmp_data["id"]==i]['code_postal'].iloc[0],
        code_postal2 = tmp_data.loc[tmp_data["id"]==i]['code_postal2'].iloc[0],
    )
    for i in tmp_data["id"]
]

相关问题 更多 >