将字典列表作为列标题和值添加到数据帧

我对熊猫有点陌生,我有一个项目,我有一个位链接及其各自指标的数据框架。我还收集了每个比特链接的国家/地区数据,当解析后者时,它会返回包含县代码及其相应点击次数的字典列表。


我想做的是将国家代码作为列添加到现有的位链接数据帧中,然后将每个国家/地区的点击次数保存到其特定的位链接行中。如果有人能在这方面帮助我,那就太好了。


熊猫bitly_links数据帧:


index | link        | long_url            | created_at          | link_clicks |

------|-------------|---------------------|---------------------|-------------|

0     | bit.ly/aaaa | https://example.com | 2020-04-01 10:54:33 | 150         |

1     | bit.ly/bbbb | https://example.com | 2020-04-01 10:54:33 | 20          |

2     | bit.ly/cccc | https://example.com | 2020-04-01 10:54:33 | 15          |

3     | bit.ly/dddd | https://example.com | 2020-04-01 10:54:33 | 13          |

Python国家/地区列表为一个特定的位(例如 bit.ly/aaaa)链接:


countries_data = [

                   {'country': 'US', 'clicks': 150}, {'country': 'UK', 'clicks': 20}, 

                   {'country': 'AU', 'clicks': 45}, {'country': 'ZS', 'clicks': 31}

                 ]


index | country | clicks |

------|---------|--------|

0     | US      | 150    |

1     | UK      | 20     |

2     | AU      | 45     |

3     | ZS      | 31     |

我想制作的新数据帧:


index | link        | long_url            | created_at          | link_clicks | US | UK | AU | ZS |

------|-------------|---------------------|---------------------|-------------|----|----|----|----|

0     | bit.ly/aaaa | https://example.com | 2020-04-01 10:54:33 | 110         | 20 | 30 | 10 | 50 |

1     | bit.ly/bbbb | https://example.com | 2020-04-01 10:54:33 | 89          | 25 | 41 | 11 | 12 |

2     | bit.ly/cccc | https://example.com | 2020-04-01 10:54:33 | 81          | 10 | 27 | 31 | 14 |

3     | bit.ly/dddd | https://example.com | 2020-04-01 10:54:33 | 126         | 11 | 74 | 31 | 10 |


慕田峪9158850
浏览 94回答 1
1回答

摇曳的蔷薇

我认为您要做的是整理每次点击的国家/地区信息数据:# I take the example with two lists for link-level data related to countries, but#  it extends to more :import pandas as pdcountries_data1 = [                   {'country': 'US', 'clicks': 150}, {'country': 'UK', 'clicks': 20},                   {'country': 'AU', 'clicks': 45}, {'country': 'ZS', 'clicks': 31}                 ]countries_data2 = [                   {'country': 'US', 'clicks': 150}, {'country': 'UK', 'clicks': 20},                   {'country': 'AU', 'clicks': 45}, {'country': 'ZS', 'clicks': 31}                 ]# transform to dataframe, add variable link, and concatcountries_data1 = pd.DataFrame(countries_data1).assign(link="bit.ly/aaaa")countries_data2 = pd.DataFrame(countries_data2).assign(link="bit.ly/bbbb")df = pd.concat([countries_data1, countries_data2]) # you will concat the list of all # your dataframes with link information regarding countries, here I only have 2 in#  this example# then go in wide format with pivot_tabledf = df.pivot_table(index="link", values="clicks", columns="country")你得到这个表:country      AU  UK   US  ZSlink                        bit.ly/aaaa  45  20  150  31bit.ly/bbbb  45  20  150  31# assume your first table (simplified) is : table = pd.DataFrame({"link": ["bit.ly/aaaa", "bit.ly/bbbb"],                      "link_clicks": [150,20]})# set the index for linktable = table.set_index("link")# then do an outer join on link merge_df = pd.concat([table, df], join="outer", axis=1)merge_df.head()您得到的结果:             link_clicks  AU  UK   US  ZSlink                                     bit.ly/aaaa          150  45  20  150  31bit.ly/bbbb           20  45  20  150  31
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python