{"id":4245,"date":"2024-06-05T13:38:23","date_gmt":"2024-06-05T20:38:23","guid":{"rendered":"https:\/\/ioflood.com\/blog\/?p=4245"},"modified":"2024-06-05T20:42:23","modified_gmt":"2024-06-06T03:42:23","slug":"pandas-concat","status":"publish","type":"post","link":"https:\/\/ioflood.com\/blog\/pandas-concat\/","title":{"rendered":"Pandas concat() Function: Guide to Merging DataFrames"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/ioflood.com\/blog\/wp-content\/uploads\/2024\/06\/Scene-with-technicians-configuring-pandas-concat-in-a-datacenter-for-enhanced-data-manipulation-300x300.jpg\" alt=\"Scene with technicians configuring pandas concat in a datacenter for enhanced data manipulation\" width=\"300\" height=\"300\" title=\"\"><\/figure>\n<\/div>\n<p>Integrating and combining datasets seamlessly is crucial for data analysis on our servers at <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/\">IOFLOOD<\/a>. The pandas concat function facilitates this process by enabling users to concatenate DataFrames in Pandas efficiently. We have formulated today&#8217;s article with practical examples and strategies to aid our customers in leveraging pandas concat effectively on their <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/phoenix-dedicated-servers.php\">Customizable server solutions<\/a>.<\/p>\n<p><strong>This comprehensive guide will walk you through the process of using <code>concat<\/code> in Pandas, from basic use to advanced techniques.<\/strong> By the end of this article, you&#8217;ll be able to wield the <code>concat<\/code> function with confidence, merging dataframes efficiently and effectively.<\/p>\n<p>Let&#8217;s dive in to manipulating data frames in Panda!<\/p>\n<h2>TL;DR: How Do I Concatenate DataFrames in Pandas?<\/h2>\n<blockquote><p>\n  To concatenate dataframes in Pandas, you use the <code>concat()<\/code> function with the syntax, <code>pd.concat([dataframe1, dataframe2])<\/code>\n<\/p><\/blockquote>\n<p>Here&#8217;s a simple example:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})\nresult = pd.concat([df1, df2])\nprint(result)\n\n# Output:\n#    A   B\n# 0  A0  B0\n# 1  A1  B1\n# 0  A2  B2\n# 1  A3  B3\n<\/code><\/pre>\n<p>In this example, we created two dataframes, <code>df1<\/code> and <code>df2<\/code>, each with columns &#8216;A&#8217; and &#8216;B&#8217;. We then used the <code>concat()<\/code> function to merge these two dataframes. The resulting dataframe, <code>result<\/code>, is a combination of <code>df1<\/code> and <code>df2<\/code>.<\/p>\n<blockquote><p>\n  For a more detailed understanding and advanced usage scenarios, continue reading this guide.\n<\/p><\/blockquote>\n<h2>Understanding the Basics of <code>concat()<\/code><\/h2>\n<p>The <code>concat()<\/code> function in Pandas is a straightforward yet powerful method for <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/how-to-use-pandas-merge-with-dataframe-objects\/\">combining two or more dataframes<\/a>. At its simplest, it takes a list of dataframes and appends them along a particular axis (either rows or columns), creating a single dataframe.<\/p>\n<p>Let&#8217;s look at an example:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})\nresult = pd.concat([df1, df2])\nprint(result)\n\n# Output:\n#    A   B\n# 0  A0  B0\n# 1  A1  B1\n# 0  A2  B2\n# 1  A3  B3\n<\/code><\/pre>\n<p>In this example, we&#8217;ve created two dataframes, <code>df1<\/code> and <code>df2<\/code>, each with two rows and two columns. The <code>concat()<\/code> function takes these dataframes as a list (<code>[df1, df2]<\/code>) and merges them. The result is a new dataframe that combines the rows of <code>df1<\/code> and <code>df2<\/code>.<\/p>\n<p>While the <code>concat()<\/code> function is a handy tool for dataframe merging, it&#8217;s important to be aware of its potential pitfalls. One common issue is the handling of indexes. In our example, the resulting dataframe maintains the original indexes of <code>df1<\/code> and <code>df2<\/code>, which may not be desirable in all cases. We&#8217;ll delve into how to manage this and other advanced features in the upcoming sections.<\/p>\n<h2>Leveraging Parameters in <code>concat()<\/code><\/h2>\n<p>The <code>concat()<\/code> function in Pandas offers a range of parameters that allow for more control over how dataframes are merged. Three of the most commonly used parameters are &#8216;axis&#8217;, &#8216;join&#8217;, and &#8216;keys&#8217;. Let&#8217;s explore each of these in detail.<\/p>\n<h3>Adjusting the Axis<\/h3>\n<p>The &#8216;axis&#8217; parameter determines whether the dataframes are concatenated along the row axis (0) or the column axis (1). By default, <code>concat()<\/code> merges dataframes vertically (row-wise). Here&#8217;s how to use &#8216;axis&#8217; to concatenate dataframes horizontally (column-wise):<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'C': ['C0', 'C1'], 'D': ['D0', 'D1']})\nresult = pd.concat([df1, df2], axis=1)\nprint(result)\n\n# Output:\n#    A   B   C   D\n# 0  A0  B0  C0  D0\n# 1  A1  B1  C1  D1\n<\/code><\/pre>\n<p>In this example, <code>df1<\/code> and <code>df2<\/code> are merged side-by-side, resulting in a dataframe with four columns (&#8216;A&#8217;, &#8216;B&#8217;, &#8216;C&#8217;, and &#8216;D&#8217;).<\/p>\n<h3>Choosing the Join Method<\/h3>\n<p>The &#8216;join&#8217; parameter dictates how <code>concat()<\/code> handles the merging of dataframes with non-matching indexes or columns. By default, it uses an &#8216;outer&#8217; join, which includes all indexes or columns even if they don&#8217;t match. However, you can set &#8216;join&#8217; to &#8216;inner&#8217; to only include matching indexes or columns. Here&#8217;s an example:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'B': ['B2', 'B3'], 'C': ['C2', 'C3']})\nresult = pd.concat([df1, df2], join='inner')\nprint(result)\n\n# Output:\n#    B\n# 0  B0\n# 1  B1\n# 0  B2\n# 1  B3\n<\/code><\/pre>\n<p>In this case, only the &#8216;B&#8217; column, which is present in both dataframes, is included in the result.<\/p>\n<h3>Using Keys for Hierarchical Indexing<\/h3>\n<p>The &#8216;keys&#8217; parameter allows you to create a hierarchical index, which can be useful for tracking the original dataframes. Here&#8217;s how to use &#8216;keys&#8217; in <code>concat()<\/code>:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})\nresult = pd.concat([df1, df2], keys=['df1', 'df2'])\nprint(result)\n\n# Output:\n#        A   B\n# df1 0  A0  B0\n#    1  A1  B1\n# df2 0  A2  B2\n#    1  A3  B3\n<\/code><\/pre>\n<p>In the output, &#8216;df1&#8217; and &#8216;df2&#8217; are used as keys to indicate the origin of each row.<\/p>\n<p>Understanding and leveraging these parameters can greatly enhance your use of the <code>concat()<\/code> function, providing you with more control over how your dataframes are merged.<\/p>\n<h2>Alternative Concatenation Approaches<\/h2>\n<p>While the <code>concat()<\/code> function is a powerful tool for merging dataframes, Pandas provides other functions that offer different ways to combine dataframes. Two of these are the <code>merge()<\/code> and <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/python-join\/\"><code>join()<\/code> functions<\/a>.<\/p>\n<h3>Merging DataFrames with <code>merge()<\/code><\/h3>\n<p>The <code>merge()<\/code> function combines dataframes based on a common column. Here&#8217;s an example:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'A': ['A1', 'A2'], 'C': ['C1', 'C2']})\nresult = df1.merge(df2, on='A', how='inner')\nprint(result)\n\n# Output:\n#    A   B   C\n# 0  A1  B1  C1\n<\/code><\/pre>\n<p>In this example, <code>df1<\/code> and <code>df2<\/code> are merged based on the common &#8216;A&#8217; column. The &#8216;how&#8217; parameter is set to &#8216;inner&#8217;, which means only the matching rows are included in the result.<\/p>\n<h3>Joining DataFrames with <code>join()<\/code><\/h3>\n<p>The <code>join()<\/code> function combines dataframes based on their indexes. Here&#8217;s an example:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']}, index=['a', 'b'])\ndf2 = pd.DataFrame({'C': ['C0', 'C1'], 'D': ['D0', 'D1']}, index=['a', 'b'])\nresult = df1.join(df2)\nprint(result)\n\n# Output:\n#    A   B   C   D\n# a  A0  B0  C0  D0\n# b  A1  B1  C1  D1\n<\/code><\/pre>\n<p>In this case, <code>df1<\/code> and <code>df2<\/code> are joined based on their indexes, resulting in a dataframe that includes all columns from both dataframes.<\/p>\n<p>Each of these functions has its advantages and disadvantages. The <code>concat()<\/code> function is versatile and can handle simple concatenations quickly and efficiently. The <code>merge()<\/code> function is powerful when you need to combine dataframes based on a common column, while the <code>join()<\/code> function is ideal when you want to combine dataframes based on their indexes.<\/p>\n<table>\n<thead>\n<tr>\n<th>Function<\/th>\n<th>Advantages<\/th>\n<th>Disadvantages<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>concat()<\/code><\/td>\n<td>Versatile, handles simple concatenations<\/td>\n<td>May require additional steps to handle complex merges<\/td>\n<\/tr>\n<tr>\n<td><code>merge()<\/code><\/td>\n<td>Powerful for merging on common columns<\/td>\n<td>Can be complex to use for new users<\/td>\n<\/tr>\n<tr>\n<td><code>join()<\/code><\/td>\n<td>Ideal for merging on indexes<\/td>\n<td>Limited to index-based merging<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In conclusion, the method you choose for concatenating dataframes depends on your specific needs and the nature of your data. It&#8217;s beneficial to familiarize yourself with all these functions to enhance your data manipulation skills in Pandas.<\/p>\n<h2>Handling Errors with Pandas concat()<\/h2>\n<p>While <code>concat()<\/code> is a powerful function, it&#8217;s not without its quirks. Let&#8217;s discuss some common issues you may encounter while using it, along with their solutions and workarounds.<\/p>\n<h3>Dealing with &#8216;ValueError&#8217;<\/h3>\n<p>One common issue is the &#8216;ValueError&#8217;, which often arises when trying to concatenate dataframes with different column names. Here&#8217;s an example:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'C': ['C0', 'C1'], 'D': ['D0', 'D1']})\ntry:\n    result = pd.concat([df1, df2])\nexcept ValueError as e:\n    print(e)\n\n# Output:\n# Frames have different column names\n<\/code><\/pre>\n<p>In this case, the solution is to ensure that the dataframes share the same column names or to use the <code>ignore_index=True<\/code> parameter to reset the index in the resulting dataframe.<\/p>\n<h3>Handling Different Indexes<\/h3>\n<p>Another common issue is dealing with dataframes that have different indexes. If you concatenate such dataframes without specifying the &#8216;axis&#8217; parameter, the resulting dataframe may not be what you expect. Here&#8217;s an example:<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']}, index=['a', 'b'])\ndf2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']}, index=['c', 'd'])\nresult = pd.concat([df1, df2])\nprint(result)\n\n# Output:\n#    A   B\n# a  A0  B0\n# b  A1  B1\n# c  A2  B2\n# d  A3  B3\n<\/code><\/pre>\n<p>In this case, the resulting dataframe maintains the original indexes from <code>df1<\/code> and <code>df2<\/code>, which may not be desirable. To avoid this, you can use the <code>ignore_index=True<\/code> parameter to reset the index in the resulting dataframe.<\/p>\n<p>Understanding these common issues and their solutions can help you to use the <code>concat()<\/code> function more effectively and avoid potential pitfalls.<\/p>\n<h2>Understanding Pandas DataFrames<\/h2>\n<p>Before diving deeper into the <code>concat()<\/code> function, it&#8217;s important to understand the basics of Pandas DataFrames and the concept of concatenation.<\/p>\n<h3>What is a DataFrame?<\/h3>\n<p>In Pandas, a DataFrame is a two-dimensional labeled <a href=\"https:\/\/ioflood.com\/blog\/python-data-structures\/\">data structure<\/a> with columns potentially of <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/python-data-types\/\">different types<\/a>. You can think of it like a spreadsheet or an SQL table. Here&#8217;s a simple example of a DataFrame:<\/p>\n<pre><code class=\"language-python line-numbers\">import pandas as pd\n\ndf = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\nprint(df)\n\n# Output:\n#    A   B\n# 0  A0  B0\n# 1  A1  B1\n<\/code><\/pre>\n<p>This DataFrame, <code>df<\/code>, has two columns (&#8216;A&#8217; and &#8216;B&#8217;) and two rows. Each cell <a href=\"https:\/\/ioflood.com\/blog\/python-string-contains\/\">contains a string<\/a>.<\/p>\n<h3>What is Concatenation?<\/h3>\n<p>Concatenation is the process of joining two or more things end-to-end. In the context of dataframes, concatenation refers to the joining of two or more dataframes along a particular axis (either rows or columns).<\/p>\n<pre><code class=\"language-python line-numbers\">df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})\ndf2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})\nresult = pd.concat([df1, df2])\nprint(result)\n\n# Output:\n#    A   B\n# 0  A0  B0\n# 1  A1  B1\n# 0  A2  B2\n# 1  A3  B3\n<\/code><\/pre>\n<p>In this example, <code>df1<\/code> and <code>df2<\/code> are concatenated along the row axis (the default). The resulting dataframe, <code>result<\/code>, includes all rows from both <code>df1<\/code> and <code>df2<\/code>.<\/p>\n<p>By <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/pandas-dataframe\/\">understanding Pandas DataFrames<\/a> and the concept of concatenation, you can better comprehend the workings of the <code>concat()<\/code> function and use it more effectively.<\/p>\n<h2>Real-World Data Tasks: Using concat()<\/h2>\n<p>DataFrame concatenation using <code>concat()<\/code> is not just a technical skill, it&#8217;s a critical tool in the world of data analysis and machine learning. The ability to merge and manipulate dataframes effectively can significantly impact the quality of your data analysis and the accuracy of your machine learning models.<\/p>\n<p>Consider a scenario where you&#8217;re working with a large dataset that&#8217;s been <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/python-csv\/\">split across multiple CSV files<\/a>. Using <code>concat()<\/code>, you can easily merge these files into a single DataFrame for analysis. Or perhaps you&#8217;re doing feature engineering for a machine learning model, and you need to combine several features into a single DataFrame. Again, <code>concat()<\/code> comes to the rescue.<\/p>\n<pre><code class=\"language-python line-numbers\"># Combining multiple CSV files into a single DataFrame\ndf1 = pd.read_csv('file1.csv')\ndf2 = pd.read_csv('file2.csv')\ndf = pd.concat([df1, df2])\n\n# Combining features for a machine learning model\nfeature1 = pd.DataFrame({'feature1': [0, 1, 2, 3]})\nfeature2 = pd.DataFrame({'feature2': [4, 5, 6, 7]})\nfeatures = pd.concat([feature1, feature2], axis=1)\n<\/code><\/pre>\n<p>In both of these examples, <code>concat()<\/code> simplifies the process of combining data, making your data analysis or machine learning workflow smoother and more efficient.<\/p>\n<p>Beyond dataframe concatenation, there are many other important concepts in data analysis and machine learning to explore, such as data cleaning, data visualization, and model tuning. Each of these topics is a deep well of knowledge in its own right, and mastering them can greatly enhance your data science skills.<\/p>\n<p>If you&#8217;re interested in diving deeper into these topics, there are numerous resources available online. Websites like Kaggle, Coursera, and Medium offer a wealth of tutorials, courses, and articles on a wide range of data science topics. By continuing to learn and expand your skillset, you&#8217;ll be well on your way to becoming a proficient data scientist.<\/p>\n<h3>Further Resources for Pandas Library<\/h3>\n<p>If you&#8217;re interested in learning more ways to utilize the Pandas library, here are a few resources that you might find helpful:<\/p>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/python-pandas\/\">Data Analysis Made Simple: A Pandas Tutorial<\/a>: Simplify your approach to data analysis with this easy-to-follow Pandas tutorial, ideal for beginners and intermediate users alike.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/pandas-read-csv\/\">Reading CSV Files with Pandas<\/a>: This article provides a comprehensive guide on how to read CSV files using Pandas in Python.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/ioflood.com\/blog\/pandas-reset-index\/\">Resetting the Index of a Pandas DataFrame<\/a>: This tutorial explains how to reset the index of a Pandas DataFrame.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/pandas.pydata.org\/docs\/reference\/api\/pandas.concat.html\" target=\"_blank\" rel=\"noopener\">pandas.concat() &#8211; pandas API Reference<\/a>: Official documentation for the concat() function in Pandas, providing information on how to concatenate DataFrames.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.geeksforgeeks.org\/pandas-concat-function-in-python\/\" target=\"_blank\" rel=\"noopener\">Pandas concat() Function in Python<\/a>: An article on GeeksforGeeks explaining how to use the concat() function in Pandas to combine DataFrames.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/pandas-concat-examples\" target=\"_blank\" rel=\"noopener\">Pandas concat(): Joining DataFrames<\/a>: A tutorial on DigitalOcean that demonstrates various examples of using the concat() function in Pandas.<\/p>\n<\/li>\n<\/ul>\n<h2>Wrap Up: <code>concat()<\/code> function in Pandas<\/h2>\n<p>Throughout this guide, we&#8217;ve explored the ins and outs of the <code>concat()<\/code> function in Pandas, a powerful tool for merging dataframes. We started with the basics, demonstrating how to use <code>concat()<\/code> to join two simple dataframes. We then dove into more advanced usage, discussing parameters like &#8216;axis&#8217;, &#8216;join&#8217;, and &#8216;keys&#8217; that provide more control over the concatenation process.<\/p>\n<p>Along the way, we highlighted some common issues that you might encounter when using <code>concat()<\/code>, such as &#8216;ValueError&#8217; and problems with different indexes. We provided solutions and workarounds for these issues, equipping you with the knowledge to handle any hiccups in your dataframe merging journey.<\/p>\n<p>We also discussed alternative methods for concatenating dataframes, including the <code>merge()<\/code> and <code>join()<\/code> functions. Each of these methods has its own strengths and weaknesses, and the best one to use depends on your specific needs and the nature of your data.<\/p>\n<p>Here&#8217;s a comparison table of the discussed methods for a quick recap:<\/p>\n<table>\n<thead>\n<tr>\n<th>Function<\/th>\n<th>Advantages<\/th>\n<th>Disadvantages<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>concat()<\/code><\/td>\n<td>Versatile, handles simple concatenations<\/td>\n<td>Requires additional steps for complex merges<\/td>\n<\/tr>\n<tr>\n<td><code>merge()<\/code><\/td>\n<td>Powerful for merging on common columns<\/td>\n<td>Can be complex for new users<\/td>\n<\/tr>\n<tr>\n<td><code>join()<\/code><\/td>\n<td>Ideal for merging on indexes<\/td>\n<td>Limited to index-based merging<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In conclusion, mastering dataframe concatenation in Pandas, represented by the <code>concat()<\/code> function, is a valuable skill in data analysis and machine learning. By understanding and effectively using this function, you can manipulate your dataframes with ease, enhancing the quality of your data analysis and the accuracy of your machine learning models.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Integrating and combining datasets seamlessly is crucial for data analysis on our servers at IOFLOOD. The pandas concat function facilitates this process by enabling users to concatenate DataFrames in Pandas efficiently. We have formulated today&#8217;s article with practical examples and strategies to aid our customers in leveraging pandas concat effectively on their Customizable server solutions. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":21270,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[121,123],"tags":[],"class_list":["post-4245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-coding","category-python","cat-121-id","cat-123-id","has_thumb"],"_links":{"self":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts\/4245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/comments?post=4245"}],"version-history":[{"count":31,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts\/4245\/revisions"}],"predecessor-version":[{"id":21271,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts\/4245\/revisions\/21271"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/media\/21270"}],"wp:attachment":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/media?parent=4245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/categories?post=4245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/tags?post=4245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}