【问题标题】:Numpy array as element of pandas dataframe managementNumpy 数组作为 pandas 数据框管理的元素
【发布时间】:2019-06-20 22:42:37
【问题描述】:

我正在考虑使用 Pandas 数据框。我想找到一种有效的方法,每次列名包含数字 4 时创建第二个 Dataframe,因此列元素是数组。

 import pandas as pd
 data = {"A4aa":[[1, 2,3,4]], "B":[12,],"B4bb":[[5, 6,7,8]]} 
 data1 = {"A0aa":[1],"A1aa":[2],"A2aa":[3],"A3aa":[4], "B":[12,],"B0bb":[5],"B1bb":[6],"B2bb":[7],"B3bb":[8]}  
 df = pd.DataFrame(data) 
 df1 = pd.DataFrame(data1)
        A4aa         B        B4bb
0   [1, 2, 3, 4]    12  [5, 6, 7, 8]
data1 = {"A0":[1],"A1":[2],"A2":[3],"A3":[4], "B":[12,],"B0":[5],"B1":[6],"B2":[7],"B3":[8]} 
 df1 = pd.DataFrame(data1)
   A0aa A1aa  A2aa  A3aa   B  B0bb  B1bb  B2bb   B3bb
0   1     2   3      4    12   5    6      7     8  

【问题讨论】:

    标签: python arrays pandas numpy multiple-columns


    【解决方案1】:
    def f(df):
        def g(c):
            pre, *suf = c.split('4')
            if suf:
                return pd.DataFrame(df[c].tolist()).add_prefix(pre).add_suffix(''.join(suf))
            else:
                return df[c]
        return pd.concat(map(g, df), axis=1)        
    
    f(df)
    
       A0aa  A1aa  A2aa  A3aa   B  B0bb  B1bb  B2bb  B3bb
    0     1     2     3     4  12     5     6     7     8
    

    【讨论】:

    • 对不起,我把问题简化得太多了,解决方案没有重叠,我正在尝试适应它。如果有机会我可以发布一个具有这种新复杂功能的有效解决方案,那将是完美的
    • @StefanoBarone 试试看
    • 非常感谢您更加优雅,但或多或​​少与我从您的第一个答案中获得的解决方案相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2011-05-12
    • 2013-09-09
    • 2017-02-25
    • 2020-06-20
    相关资源
    最近更新 更多