首页 > 解决方案 > 熊猫垂直拆分列

问题描述

我有一个看起来像这样的数据框:

        fname          lname                           email
0         Homer        Simpson       homer.simpson@example.com
1         Jane         Doe           jane.doe@example.com
2         Samuel       Tom           "samuel.tom@example.com, kate.leo@example.com, billy.billerson@example.com"

我想要的是这样的:

         fname          lname                           email
0         Homer        Simpson       homer.simpson@example.com
1         Jane         Doe           jane.doe@example.com
2         Samuel       Tom           samuel.tom@example.com
3                                     kate.leo@example.com
4                                    billy.billerson@example.com

在底部 2 行的名字和姓氏中没有名字。

关于如何像这样垂直分割它的任何建议?

标签: pythonpandas

解决方案


使用pandas.DataFrame.popwith joining的一种方法right

new_df = df.join(df.pop("email").str.split(", +").explode(True), how="right")
print(new_df.fillna("")) # To show nan as empty

输出:

    fname    lname                        email
0   Homer  Simpson    homer.simpson@example.com
1    Jane      Doe         jane.doe@example.com
2  Samuel      Tom       samuel.tom@example.com
3                          kate.leo@example.com
4                   billy.billerson@example.com

推荐阅读