[{"data":1,"prerenderedAt":515},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fcookbooks\u002Fpython-pandas":156,"docs-surround-\u002Fdocs\u002Fcookbooks\u002Fpython-pandas":512},[4],{"title":5,"path":6,"stem":7,"children":8},"Start","\u002Fdocs","docs\u002F0.index",[9,10,28,54,80,126,152],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14},"Erste Schritte","\u002Fdocs\u002Ferste-schritte","docs\u002F01.erste-schritte\u002F1.index",[15,16,20,24],{"title":11,"path":12,"stem":13},{"title":17,"path":18,"stem":19},"Erste Abfrage","\u002Fdocs\u002Ferste-schritte\u002Ferste-abfrage","docs\u002F01.erste-schritte\u002F2.erste-abfrage",{"title":21,"path":22,"stem":23},"Pläne und Abrechnung","\u002Fdocs\u002Ferste-schritte\u002Fabrechnung","docs\u002F01.erste-schritte\u002F3.abrechnung",{"title":25,"path":26,"stem":27},"Dashboard","\u002Fdocs\u002Ferste-schritte\u002Fdashboard","docs\u002F01.erste-schritte\u002F4.dashboard",{"title":29,"path":30,"stem":31,"children":32},"Leitfäden","\u002Fdocs\u002Fintegration-guides","docs\u002F02.integration-guides\u002F1.index",[33,34,38,42,46,50],{"title":29,"path":30,"stem":31},{"title":35,"path":36,"stem":37},"ChatGPT","\u002Fdocs\u002Fintegration-guides\u002Fchatgpt","docs\u002F02.integration-guides\u002F2.chatgpt",{"title":39,"path":40,"stem":41},"Claude","\u002Fdocs\u002Fintegration-guides\u002Fclaude","docs\u002F02.integration-guides\u002F3.claude",{"title":43,"path":44,"stem":45},"Gemini","\u002Fdocs\u002Fintegration-guides\u002Fgemini","docs\u002F02.integration-guides\u002F4.gemini",{"title":47,"path":48,"stem":49},"Copilot","\u002Fdocs\u002Fintegration-guides\u002Fcopilot","docs\u002F02.integration-guides\u002F5.copilot",{"title":51,"path":52,"stem":53},"Andere KI-Tools","\u002Fdocs\u002Fintegration-guides\u002Fandere-ki","docs\u002F02.integration-guides\u002F6.andere-ki",{"title":55,"path":56,"stem":57,"children":58},"Grundlagen","\u002Fdocs\u002Fgrundlagen","docs\u002F03.grundlagen\u002F1.index",[59,60,64,68,72,76],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63},"Was ist ein Bodenrichtwert?","\u002Fdocs\u002Fgrundlagen\u002Fwas-ist-ein-bodenrichtwert","docs\u002F03.grundlagen\u002F2.was-ist-ein-bodenrichtwert",{"title":65,"path":66,"stem":67},"Richtig suchen","\u002Fdocs\u002Fgrundlagen\u002Frichtig-suchen","docs\u002F03.grundlagen\u002F3.richtig-suchen",{"title":69,"path":70,"stem":71},"Nutzungsart","\u002Fdocs\u002Fgrundlagen\u002Fnutzungsart","docs\u002F03.grundlagen\u002F4.nutzungsart",{"title":73,"path":74,"stem":75},"Ergebnis verstehen","\u002Fdocs\u002Fgrundlagen\u002Fergebnis-verstehen","docs\u002F03.grundlagen\u002F5.ergebnis-verstehen",{"title":77,"path":78,"stem":79},"Im Team arbeiten","\u002Fdocs\u002Fgrundlagen\u002Fim-team-arbeiten","docs\u002F03.grundlagen\u002F6.im-team-arbeiten",{"title":81,"path":82,"stem":83,"children":84},"API & Integration","\u002Fdocs\u002Fentwickler-einstieg","docs\u002F04.entwickler-einstieg\u002F1.index",[85,86,90,94,112,116,121],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},"Authentifizierung","\u002Fdocs\u002Fentwickler-einstieg\u002Fauthentication","docs\u002F04.entwickler-einstieg\u002F2.authentication",{"title":91,"path":92,"stem":93},"OAuth-App registrieren","\u002Fdocs\u002Fentwickler-einstieg\u002Foauth-app-registrieren","docs\u002F04.entwickler-einstieg\u002F3.oauth-app-registrieren",{"title":95,"path":96,"stem":97,"children":98},"REST API","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F1.index",[99,100,104,108],{"title":95,"path":96,"stem":97},{"title":101,"path":102,"stem":103},"GET \u002Fapi\u002Fbodenrichtwert","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api\u002Fbodenrichtwert","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F2.bodenrichtwert",{"title":105,"path":106,"stem":107},"GET \u002Fapi\u002Fme","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api\u002Fme","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F3.me",{"title":109,"path":110,"stem":111},"POST \u002Fapi\u002Fbodenwert","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api\u002Fbodenwert","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F4.bodenwert",{"title":113,"path":114,"stem":115},"MCP Server","\u002Fdocs\u002Fentwickler-einstieg\u002Fmcp-server","docs\u002F04.entwickler-einstieg\u002F5.mcp-server",{"title":117,"path":118,"stem":119,"icon":120},"OpenAPI","\u002Fdocs\u002Fentwickler-einstieg\u002Fopenapi","docs\u002F04.entwickler-einstieg\u002F6.openapi","i-lucide-file-code-2",{"title":122,"path":123,"stem":124,"icon":125},"Fehler 451","\u002Fdocs\u002Fentwickler-einstieg\u002Ferror-451","docs\u002F04.entwickler-einstieg\u002F7.error-451","i-lucide-shield-alert",{"title":127,"path":128,"stem":129,"children":130},"Cookbooks","\u002Fdocs\u002Fcookbooks","docs\u002F05.cookbooks\u002F1.index",[131,132,136,140,144,148],{"title":127,"path":128,"stem":129},{"title":133,"path":134,"stem":135},"n8n","\u002Fdocs\u002Fcookbooks\u002Fn8n","docs\u002F05.cookbooks\u002F2.n8n",{"title":137,"path":138,"stem":139},"Python · pandas","\u002Fdocs\u002Fcookbooks\u002Fpython-pandas","docs\u002F05.cookbooks\u002F3.python-pandas",{"title":141,"path":142,"stem":143},"Excel · Power Query","\u002Fdocs\u002Fcookbooks\u002Fexcel-power-query","docs\u002F05.cookbooks\u002F4.excel-power-query",{"title":145,"path":146,"stem":147},"LangChain","\u002Fdocs\u002Fcookbooks\u002Flangchain","docs\u002F05.cookbooks\u002F5.langchain",{"title":149,"path":150,"stem":151},"Zapier · Make","\u002Fdocs\u002Fcookbooks\u002Fzapier-make","docs\u002F05.cookbooks\u002F6.zapier-make",{"title":153,"path":154,"stem":155},"Häufige Fragen","\u002Fdocs\u002Fhaeufige-fragen","docs\u002F06.haeufige-fragen",{"id":157,"title":158,"audience":159,"body":160,"description":505,"extension":506,"links":507,"meta":508,"navigation":509,"path":138,"seo":510,"stem":139,"__hash__":511},"docs\u002Fdocs\u002F05.cookbooks\u002F3.python-pandas.md","Python \u002F pandas","developer",{"type":161,"value":162,"toc":501},"minimark",[163,168,475,479,497],[164,165,167],"h2",{"id":166},"setup","Setup",[169,170,175],"pre",{"className":171,"code":172,"language":173,"meta":174,"style":174},"language-python shiki shiki-themes github-light","import os\nimport httpx\nimport pandas as pd\n\nTOKEN = os.environ[\"BRW_TOKEN\"]\nBASE = \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert\"\n\ndef lookup(address: str) -> dict | None:\n    r = httpx.get(BASE, params={\"address\": address}, headers={\n        \"Authorization\": f\"Bearer {TOKEN}\",\n    }, timeout=10.0)\n    if r.status_code == 451:\n        return {\"restricted\": True}\n    r.raise_for_status()\n    return r.json()\n\ndf = pd.read_excel(\"adressen.xlsx\")\ndf[\"brw\"] = df[\"adresse\"].apply(lookup)\ndf.to_excel(\"adressen_mit_brw.xlsx\")\n","python","",[176,177,178,191,199,213,220,240,251,256,287,327,351,368,385,405,411,420,425,441,464],"code",{"__ignoreMap":174},[179,180,183,187],"span",{"class":181,"line":182},"line",1,[179,184,186],{"class":185},"sD7c4","import",[179,188,190],{"class":189},"sgsFI"," os\n",[179,192,194,196],{"class":181,"line":193},2,[179,195,186],{"class":185},[179,197,198],{"class":189}," httpx\n",[179,200,202,204,207,210],{"class":181,"line":201},3,[179,203,186],{"class":185},[179,205,206],{"class":189}," pandas ",[179,208,209],{"class":185},"as",[179,211,212],{"class":189}," pd\n",[179,214,216],{"class":181,"line":215},4,[179,217,219],{"emptyLinePlaceholder":218},true,"\n",[179,221,223,227,230,233,237],{"class":181,"line":222},5,[179,224,226],{"class":225},"sYu0t","TOKEN",[179,228,229],{"class":185}," =",[179,231,232],{"class":189}," os.environ[",[179,234,236],{"class":235},"sYBdl","\"BRW_TOKEN\"",[179,238,239],{"class":189},"]\n",[179,241,243,246,248],{"class":181,"line":242},6,[179,244,245],{"class":225},"BASE",[179,247,229],{"class":185},[179,249,250],{"class":235}," \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert\"\n",[179,252,254],{"class":181,"line":253},7,[179,255,219],{"emptyLinePlaceholder":218},[179,257,259,262,266,269,272,275,278,281,284],{"class":181,"line":258},8,[179,260,261],{"class":185},"def",[179,263,265],{"class":264},"s7eDp"," lookup",[179,267,268],{"class":189},"(address: ",[179,270,271],{"class":225},"str",[179,273,274],{"class":189},") -> ",[179,276,277],{"class":225},"dict",[179,279,280],{"class":185}," |",[179,282,283],{"class":225}," None",[179,285,286],{"class":189},":\n",[179,288,290,293,296,299,301,304,308,310,313,316,319,322,324],{"class":181,"line":289},9,[179,291,292],{"class":189},"    r ",[179,294,295],{"class":185},"=",[179,297,298],{"class":189}," httpx.get(",[179,300,245],{"class":225},[179,302,303],{"class":189},", ",[179,305,307],{"class":306},"sqxcx","params",[179,309,295],{"class":185},[179,311,312],{"class":189},"{",[179,314,315],{"class":235},"\"address\"",[179,317,318],{"class":189},": address}, ",[179,320,321],{"class":306},"headers",[179,323,295],{"class":185},[179,325,326],{"class":189},"{\n",[179,328,330,333,336,339,342,345,348],{"class":181,"line":329},10,[179,331,332],{"class":235},"        \"Authorization\"",[179,334,335],{"class":189},": ",[179,337,338],{"class":185},"f",[179,340,341],{"class":235},"\"Bearer ",[179,343,344],{"class":225},"{TOKEN}",[179,346,347],{"class":235},"\"",[179,349,350],{"class":189},",\n",[179,352,354,357,360,362,365],{"class":181,"line":353},11,[179,355,356],{"class":189},"    }, ",[179,358,359],{"class":306},"timeout",[179,361,295],{"class":185},[179,363,364],{"class":225},"10.0",[179,366,367],{"class":189},")\n",[179,369,371,374,377,380,383],{"class":181,"line":370},12,[179,372,373],{"class":185},"    if",[179,375,376],{"class":189}," r.status_code ",[179,378,379],{"class":185},"==",[179,381,382],{"class":225}," 451",[179,384,286],{"class":189},[179,386,388,391,394,397,399,402],{"class":181,"line":387},13,[179,389,390],{"class":185},"        return",[179,392,393],{"class":189}," {",[179,395,396],{"class":235},"\"restricted\"",[179,398,335],{"class":189},[179,400,401],{"class":225},"True",[179,403,404],{"class":189},"}\n",[179,406,408],{"class":181,"line":407},14,[179,409,410],{"class":189},"    r.raise_for_status()\n",[179,412,414,417],{"class":181,"line":413},15,[179,415,416],{"class":185},"    return",[179,418,419],{"class":189}," r.json()\n",[179,421,423],{"class":181,"line":422},16,[179,424,219],{"emptyLinePlaceholder":218},[179,426,428,431,433,436,439],{"class":181,"line":427},17,[179,429,430],{"class":189},"df ",[179,432,295],{"class":185},[179,434,435],{"class":189}," pd.read_excel(",[179,437,438],{"class":235},"\"adressen.xlsx\"",[179,440,367],{"class":189},[179,442,444,447,450,453,455,458,461],{"class":181,"line":443},18,[179,445,446],{"class":189},"df[",[179,448,449],{"class":235},"\"brw\"",[179,451,452],{"class":189},"] ",[179,454,295],{"class":185},[179,456,457],{"class":189}," df[",[179,459,460],{"class":235},"\"adresse\"",[179,462,463],{"class":189},"].apply(lookup)\n",[179,465,467,470,473],{"class":181,"line":466},19,[179,468,469],{"class":189},"df.to_excel(",[179,471,472],{"class":235},"\"adressen_mit_brw.xlsx\"",[179,474,367],{"class":189},[164,476,478],{"id":477},"tipps","Tipps",[480,481,482,490],"ul",{},[483,484,485,486,489],"li",{},"Ein Rate-Limiter (z. B. ",[176,487,488],{},"tenacity",") lohnt sich bei >100 Zeilen.",[483,491,492,493,496],{},"Lokal zwischenspeichern — unsere Antwort hat ein ",[176,494,495],{},"stichtag","-Feld, das du zum Invalidieren nutzen kannst.",[498,499,500],"style",{},"html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":174,"searchDepth":201,"depth":201,"links":502},[503,504],{"id":166,"depth":193,"text":167},{"id":477,"depth":193,"text":478},"Batch-Lookup aus einer Excel-Liste, Merge ins DataFrame.","md",null,{},{"title":137},{"title":158,"description":505},"KIf2DasBwKNfX_OfAgfjuHFUzhCSh8s8kkBCNtRzRx4",[513,514],{"title":133,"path":134,"stem":135,"children":-1},{"title":141,"path":142,"stem":143,"children":-1},1785091390505]