【问题标题】:Data Rearrangement using python Pandas | Create a column based on repeated index and fill with the column value使用 python Pandas 进行数据重排 |根据重复索引创建列并填充列值
【发布时间】:2019-02-02 10:31:46
【问题描述】:

将 python csv 数据重新排列成行和不同的列 我有 csv 数据库,其中包含以下格式的姓名和朋友列表

预期输出如下: 名称和值在一行中,按照名称重复的重复列数。

执行此输出的最佳方式是什么?

【问题讨论】:

    标签: python database pandas csv


    【解决方案1】:

    您也可以使用 groupby 并使用 from_dict 创建一个新的数据框:

    new_dict = (df.groupby('Name')
                  .apply(lambda x: list(map(lambda x: x, x['Value'])))
                  .to_dict())
    
    new_df = pd.DataFrame.from_dict(new_dict, orient='index')
    

    这会给你:

               0      1      2
    Ajay    C529   C530   None
    Djna   A-506  A-507  A-508
    Patc2  B-526  B-527  B-528
    

    【讨论】:

    • 感谢@LilianBordeau。它的工作原理,列名出现 0,1,2/...如何将其更改为 Value-1,value-2,value3..... 等。
    • 按照@anky_91 的建议,只需在 new_df.columns 中添加 new_df.columns=['value_'+str(i+1) for i]
    • @LilianBordeau 好一个。 +1
    • 我添加了 new_df.add_suffix('_Value'),它有效。谢谢@anky_91
    【解决方案2】:

    IIUC 你需要df.pivot() 然后将值向左移动:

    df_new=df.pivot(index='Name',columns='Value',values='Value')\
    .apply(lambda x: pd.Series(x.dropna().values), axis=1).fillna(np.nan)
    df_new.columns=['value_'+str(i+1) for i in df_new.columns]
    print(df_new)
    
        value_1 value_2 value_3 value_4 value_5 value_6 value_7 value_8 value_9  \
    Name                                                                            
    Ajay     C529    C530    C531    C532    C533    C534    C535     NaN     NaN   
    Djna    A-506   A-507   A-508   A-509   A-510   A-511   A-512   A-513   A-514   
    Patc2   B-526   B-527   B-528     NaN     NaN     NaN     NaN     NaN     NaN   
    
          value_10  
    Name            
    Ajay       NaN  
    Djna     A-515  
    Patc2      NaN  
    

    【讨论】:

    • 运行时出现错误 df_new=df.pivot(index='Name',columns='Value',values='Value').apply(lambda x: pd.Series(x. dropna().values), axis=1).fillna(np.nan) df_new.columns=['value_'+str(i+1) for i in df_new.columns] print(df_new) " 索引包含重复条目, ' ValueError: 索引包含重复条目,无法重塑"
    猜你喜欢
    • 2016-02-19
    • 1970-01-01
    • 2022-10-07
    • 2019-03-07
    • 1970-01-01
    • 2018-03-12
    • 2018-11-01
    • 2021-07-31
    相关资源
    最近更新 更多