Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并数据帧;插入DataFrame2';将行放入变量DataFrame1';s行/列_Python_Pandas_Dataframe_Join - Fatal编程技术网

Python 合并数据帧;插入DataFrame2';将行放入变量DataFrame1';s行/列

Python 合并数据帧;插入DataFrame2';将行放入变量DataFrame1';s行/列,python,pandas,dataframe,join,Python,Pandas,Dataframe,Join,这是一个有点混乱/具有挑战性的合并,我在这里尝试这样做,但我还没有找到一个适用于这种情况的StackOverflow问题,所以这里是: DataFrame1采用我的“最终目标”格式(因此我最终希望将数据从DataFrame2粘贴到DataFrame1中),如下所示: 轮廓: 姓名: 公司名称1: 职位1: 工作总结1: 公司名称2: 职位2: 工作总结2: 公司名称3: 职位3: 工作总结3: 个人资料(0) 无名氏 剖面图1 史密斯任務 剖面图2 玛丽·罗 剖面图3 乔·什莫 策略 通过set

这是一个有点混乱/具有挑战性的合并,我在这里尝试这样做,但我还没有找到一个适用于这种情况的StackOverflow问题,所以这里是:

DataFrame1采用我的“最终目标”格式(因此我最终希望将数据从DataFrame2粘贴到DataFrame1中),如下所示:

轮廓: 姓名: 公司名称1: 职位1: 工作总结1: 公司名称2: 职位2: 工作总结2: 公司名称3: 职位3: 工作总结3: 个人资料(0) 无名氏 剖面图1 史密斯任務 剖面图2 玛丽·罗 剖面图3 乔·什莫 策略

  • 通过
    set_index()
    unstack()
  • 以新形状重建df,从多索引命名列
  • 输出
    嘿,罗布,谢谢你的回复,我真的很感激。在尝试您的解决方案时,我遇到了一个问题—我的DataFrame2只是一个Pandas DataFrame,因此当我执行
    io.StringIO(DataFrame2)
    时,我会遇到以下错误:
    TypeError:initial\u值必须是str或None,而不是DataFrame
    。您究竟是如何将DataFrame2中的文本转换为io.StringIO()可以接受的格式的?我使用该构造将SO post中的表转换为DF。如果您已经有了DF,而不仅仅是网页中的文本,您就不会使用它;-)哇,我真是太感谢你了!顺便说一句,这是一个非常优雅的解决方案。非常感谢你,罗布!:)
    df = pd.read_csv(io.StringIO("""Profile:    Name:   Job #:  CompanyName:    JobTitle:   JobSummary:
    Profile_0   John Doe    1   Firm A  Capacity a  Summary a
    Profile_0   John Doe    2   Firm B  Capacity b  Summary b
    Profile_0   John Doe    3   Firm C  Capacity c  Summary c
    Profile_1   Jane Smith  1   Firm X  Capacity x  Summary x
    Profile_1   Jane Smith  2   Firm Y  Capacity y  Summary y
    Profile_1   Jane Smith  3   Firm Z  Capacity z  Summary z
    Profile_2   Mary Roe    1   Firm P  Capacity p  Summary p
    Profile_2   Mary Roe    2   Firm Q  Capacity q  Summary q"""), sep="\t")
    
    # change from long to wide
    df = df.set_index(["Profile:","Name:","Job #:"]).unstack()
    # rebuild df with values and columns from multi-index
    df = pd.DataFrame(df.reset_index().values, columns=["Profile:","Name:"]+ [f"{c[0][:-1]}{c[1]}:" for c in df.columns])
    
    
        Profile:       Name: CompanyName1: CompanyName2: CompanyName3:  JobTitle1:  JobTitle2:  JobTitle3: JobSummary1: JobSummary2: JobSummary3:
    0  Profile_0    John Doe        Firm A        Firm B        Firm C  Capacity a  Capacity b  Capacity c    Summary a    Summary b    Summary c
    1  Profile_1  Jane Smith        Firm X        Firm Y        Firm Z  Capacity x  Capacity y  Capacity z    Summary x    Summary y    Summary z
    2  Profile_2    Mary Roe        Firm P        Firm Q           NaN  Capacity p  Capacity q         NaN    Summary p    Summary q          NaN