python - 如何在 Python 中创建自定义分组 View ?

标签 python pandas pandas-groupby

我有下面的示例 df:

Project Name    Industry    Due Date
P - ABC         FI          1/31/2020
P - POA         FI          1/8/2020
P - BCD         MANU        1/25/2020
P - QWE         RES         3/6/2020
P - POI         FI          6/7/2020
P - RLK         TECH        6/9/2020
P - MJK         RET         3/18/2020
P - KIU         TECH        4/19/2020
P - KNJ         RES         3/9/2020
P - ISA         TECH        4/3/2020
P - YUI         FI          4/2/2020

我想创建一个如下所示的分组 View ,我尝试了 pandas 数据透视表,但没有达到我的期望并返回错误...

pd.pivot_table(df,index=['Industry'],columns=['Due Date'],values=['Project Name'])

预期产出:

                 Jan       Mar       Apr       Jun
Industry
FI              P - POA             P - YUI    P - POI
                P - ABC
MANU            P - BCD
RES                        P - QWE
                           P - KNJ
RET                        P - MJK
TECH                                P - ISA    P - RLK
                                    P - KIU

有没有人有什么想法?提前感谢您的帮助!

最佳答案

您可以尝试以下方法:

m= (df[['Industry','Project Name']]
    .assign(Month=pd.to_datetime(df['Due Date']).dt.month_name()))

idx=m['Industry'].unique()
final = (m.pivot_table('Project Name',
      ['Industry',m.groupby(['Industry','Month']).cumcount()],
       'Month',aggfunc='first',fill_value='')
       .rename_axis(None,axis=1).reindex(idx,level=0))

print(final)

             April  January     June    March
Industry                                      
FI       0  P - YUI  P - ABC  P - POI         
         1           P - POA                  
MANU     0           P - BCD                  
RES      0                             P - QWE
         1                             P - KNJ
TECH     0  P - KIU           P - RLK         
         1  P - ISA                           
RET      0                             P - MJK

关于python - 如何在 Python 中创建自定义分组 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60172865/

相关文章:

python - OpenCV:4相机鸟瞰图?

python networkx算法获取条件为边权重乘积的路径

python - np.select Int64 和 int64 区别

python - 将数据帧列中的某些多个值重命名为另一个单个值

python - 将 pandas.core.groupby.SeriesGroupBy 转换为 dataframe

python - SQLAlchemy 中的 with_entities 和 load_only 有什么区别?

python - 如何在 Pygame 中打印按下控制台的特定键?

python - 使用 pandas groupby 查找每个组内文本的平均长度

python - 如何将 Pandas 数据框转换为带有列名的 numpy 数组

python pandas : assign control vs. 根据 % 随机处理分组