nyft01
2021-08-08 14:54
采纳率: 100%
浏览 161
已结题

如何提取多个dataframe的列,按某一列组成新的dataframe

本人学习python完全是为了解决数据分析的问题。现在遇到一个问题,有偿请求各位帮助:
1.假设存在W1,W2,W3,Wn的数据集DataFram;
2.所有数据集W1,W2,Wn的数据结构是一样的,就是每一列都是A,B,C,D等
3.里面有一列A的数据是基本一样,不是完全一样,比如ID,是每月动态增加和减少的;
4.因为数据每个月动态更新,除了A大致一样以外,其他数据都会变。现在需要把W1,W2,Wn的数据集里面的B1,B2,B3,Wn提取出来,按照A列合成。

请问这个程序怎么写?回答出来运行无误,有偿奖励200哈,请不要嫌弃少。
PS:如果是两个,我手动用merge就可以了,但是以后每个月就会多一个DataFrame,手动的工作量会非常大,而且不智能

  • 收藏

5条回答 默认 最新

  • 咕泡-三木 2021-08-08 15:09
    已采纳

    就是以W1的A列为主键,链接多个表嘛,用sql很方便,python的话我得调试一下

    如此看来,搞数据分析sql还是需要掌握一下的。。。

    更新:

    向pandas道歉,如果熟悉pandas的话,用起来更方便

    代码

    df_list =[W1, W2, W3]
    first_df = df_list[0]
    print(first_df)
    for df in df_list[1:]:
        print(df)
        first_df = pd.concat(
            [first_df, df],
            axis=1,
        )
        # print(df)
    print(first_df)
    

    三个DF

        业绩A  业绩B  业绩C
    ID                  
    1      1     1     1
    2      1     1     1
    3      1     1     1
    4      1     1     1
    5      1     1     1
        业绩A  业绩B  业绩C
    ID                  
    7      2     2     2
    8      2     2     2
    9      2     2     2
    10     2     2     2
        业绩A  业绩B  业绩C
    ID                  
    5      3     3     3
    6      3     3     3
    7      3     3     3
    8      3     3     3
    9      3     3     3
    10     3     3     3
    11     3     3     3
    12     3     3     3
    13     3     3     3
    

    合并后

        业绩A1  业绩B1  业绩C1  业绩A2  业绩B2  业绩C2  业绩A3  业绩B3  业绩C3
    ID                                                      
    1    1.0   1.0   1.0   NaN   NaN   NaN   NaN   NaN   NaN
    2    1.0   1.0   1.0   NaN   NaN   NaN   NaN   NaN   NaN
    3    1.0   1.0   1.0   NaN   NaN   NaN   NaN   NaN   NaN
    4    1.0   1.0   1.0   NaN   NaN   NaN   NaN   NaN   NaN
    5    1.0   1.0   1.0   NaN   NaN   NaN   3.0   3.0   3.0
    6    NaN   NaN   NaN   NaN   NaN   NaN   3.0   3.0   3.0
    7    NaN   NaN   NaN   2.0   2.0   2.0   3.0   3.0   3.0
    8    NaN   NaN   NaN   2.0   2.0   2.0   3.0   3.0   3.0
    9    NaN   NaN   NaN   2.0   2.0   2.0   3.0   3.0   3.0
    10   NaN   NaN   NaN   2.0   2.0   2.0   3.0   3.0   3.0
    11   NaN   NaN   NaN   NaN   NaN   NaN   3.0   3.0   3.0
    12   NaN   NaN   NaN   NaN   NaN   NaN   3.0   3.0   3.0
    13   NaN   NaN   NaN   NaN   NaN   NaN   3.0   3.0   3.0
    
    
    已采纳该答案
    1 打赏 评论
  • CSDN专家-HGJ 2021-08-08 15:49

    思路是:使用pandas库,对每个数据框遍历,提取指定列数据,然后合并数据框。示例:

    import pandas as pd
    df1=pd.DataFrame({'id':['a','b','c','d'],'A':[100,120,140,160],'B': [200,210,220,230]})
    df2 = pd.DataFrame({'id': ['a', 'b', 'c', 'd'], 'A': [
                       60, 80, 88, 90],  'B': [300, 310, 320, 330]})
    df3 = pd.DataFrame({'id': ['a', 'b', 'c', 'd'], 'B': [2, 3, 4, 5],  'C': [410, 420, 430, 440]})
    dt=[df1,df2,df3]
    df=pd.DataFrame()
    for d in dt:
        for col in ['A','B']:
            if col in d.columns:
                df0=d[[col]]
                df=pd.concat([df,df0],axis=1)
    print(df.set_index(df1['id']))
    
    打赏 评论
  • 八九不离十❥(^_-) 2021-08-08 15:00

    ”按照A列合成“具体解释一下

    打赏 评论
  • 竟在身边 2021-08-08 15:18
    打赏 评论
  • C_Code_P 2021-08-08 15:33

    可以发测试数据吗,一点点就可以。我也想试试,

    打赏 评论

相关推荐 更多相似问题