{"id":370,"date":"2026-06-09T13:42:20","date_gmt":"2026-06-09T11:42:20","guid":{"rendered":"https:\/\/blog.ctr24.co.pl\/?p=370"},"modified":"2026-06-09T13:45:39","modified_gmt":"2026-06-09T11:45:39","slug":"pandas-df-to_dictorient","status":"publish","type":"post","link":"https:\/\/blog.ctr24.co.pl\/?p=370","title":{"rendered":"Pandas  &#8211; df.to_dict(orient=&#8221;)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><code>df.to_dict(orient=\"records\")<\/code> to bardzo praktyczna opcja Pandas, szczeg\u00f3lnie gdy pracujesz z Flaskiem i zwracasz dane jako JSON.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>orient=\"records\"<\/code> sprawia, \u017ce DataFrame zamienia si\u0119 na <strong>list\u0119 s\u0142ownik\u00f3w<\/strong>, gdzie ka\u017cdy s\u0142ownik to <strong>jeden wiersz<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To jest dok\u0142adnie taki format, jaki Flask\/JS\/API lubi\u0105 najbardziej.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\udde9 Przyk\u0142ad DataFrame<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Za\u0142\u00f3\u017cmy, \u017ce masz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>df = pd.DataFrame({\n    \"date\": &#91;\"2024-01-01\", \"2024-01-02\"],\n    \"value\": &#91;100, 105]\n})\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"> Por\u00f3wnanie orient\u00f3w<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1\ufe0f\u20e3 <strong>orient=&#8221;records&#8221;<\/strong> (najcz\u0119\u015bciej u\u017cywany w API)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>df.to_dict(orient=\"records\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  {\"date\": \"2024-01-01\", \"value\": 100},\n  {\"date\": \"2024-01-02\", \"value\": 105}\n]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2714 idealne do JSON \u2714 idealne do Flask <code>jsonify()<\/code> \u2714 idealne do frontendu (JS, React, Vue) \u2714 ka\u017cdy wiersz to osobny obiekt<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2\ufe0f\u20e3 <strong>orient=&#8221;dict&#8221;<\/strong> (domy\u015blny)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>df.to_dict()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"date\": {0: \"2024-01-01\", 1: \"2024-01-02\"},\n  \"value\": {0: 100, 1: 105}\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u274c trudne do u\u017cycia w API \u274c kolumny jako klucze, a nie wiersze \u274c frontend tego nie lubi<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3\ufe0f\u20e3 <strong>orient=&#8221;list&#8221;<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>df.to_dict(orient=\"list\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"date\": &#91;\"2024-01-01\", \"2024-01-02\"],\n  \"value\": &#91;100, 105]\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2714 dobre do wykres\u00f3w \u274c nie nadaje si\u0119 na list\u0119 rekord\u00f3w<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4\ufe0f\u20e3 <strong>orient=&#8221;index&#8221;<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>df.to_dict(orient=\"index\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"0\": {\"date\": \"2024-01-01\", \"value\": 100},\n  \"1\": {\"date\": \"2024-01-02\", \"value\": 105}\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2714 podobne do records \u274c ale kluczem jest indeks, nie lista<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5\ufe0f\u20e3 <strong>orient=&#8221;split&#8221;<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>df.to_dict(orient=\"split\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"index\": &#91;0, 1],\n  \"columns\": &#91;\"date\", \"value\"],\n  \"data\": &#91;\n    &#91;\"2024-01-01\", 100],\n    &#91;\"2024-01-02\", 105]\n  ]\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2714 dobre do serializacji DataFrame \u274c nieczytelne dla API<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\udde0 Dlaczego w Flasku u\u017cywamy <code>orient=\"records\"<\/code>?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bo <code>jsonify()<\/code> oczekuje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>listy,<\/li>\n\n\n\n<li>s\u0142ownik\u00f3w,<\/li>\n\n\n\n<li>listy s\u0142ownik\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A <code>records<\/code> daje dok\u0142adnie to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">json<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  {\"kolumna1\": \"warto\u015b\u0107\", \"kolumna2\": \"warto\u015b\u0107\"},\n  {\"kolumna1\": \"warto\u015b\u0107\", \"kolumna2\": \"warto\u015b\u0107\"}\n]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To jest <strong>najbardziej naturalny format JSON<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>df.to_dict(orient=&#8221;records&#8221;) to bardzo praktyczna opcja Pandas, szczeg\u00f3lnie gdy pracujesz z Flaskiem i zwracasz dane jako JSON. orient=&#8221;records&#8221; sprawia, \u017ce DataFrame<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,19],"tags":[],"class_list":["post-370","post","type-post","status-publish","format-standard","hentry","category-python","category-tips"],"_links":{"self":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=370"}],"version-history":[{"count":4,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/370\/revisions"}],"predecessor-version":[{"id":375,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/370\/revisions\/375"}],"wp:attachment":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}