首页 > 解决方案 > Python - 从其他两个不同形状的数据框创建新数据框的最佳方法?

问题描述

本质上,我正在尝试从其他两个数据框构建一个新的数据框,但情况有点复杂,我不确定最好的方法是什么。

在 DF1 中,每一行都是关于由 ID 定义的对象的数据,它看起来像这样:

ID  Name  datafield1 datafield2

1  Foo    info1   info2
2  bar    info3   info4
3  Foos   info5   info6

DF2 有关于每个对象的月度数据,格式如下:

ID   Name   Month   data 

1  Foo    1/20   53.6  
1  Foo    2/20   47.2
1  Foo    3/20   12.7
1  Foo    4/20   3.2
2  Bar    1/20   82.2
2  Bar    2/20   65.0
2  Bar    3/20   41.7
2  Bar    4/20   28.4

所以我想做的是通过从 DF1 中找到的 ID 搜索 DF2,然后将 DF2 中的月度数据和 DF1 中的几个重要列放入一个新的数据框中。

这是我到目前为止所拥有的,但从我所读到的内容来看,这是一个不好的方法:

IDs = df1['ID'].unique()

df3 = pd.DataFrame(rows = IDs)

for id, df in df1.groupby('ID'):
   if ([df2['ID'] == id]):
      *not sure what to put here*

所以听起来创建一个空的数据框是一种不好的方法,但我不确定如何处理它。我应该如何创建这个新的数据框?将月度数据转换为列并为每个 ID 设置一行是否更好(意味着这是一种更智能的方法),或者将每个月分开并从 DF1 中添加几列到每一行会更好吗?

标签: pythonpandasdataframe

解决方案


检查下面的行是否可以帮助您将列从 DF1 添加到新框架,我通过 excel 获取框架您可以使用自己的方式...使用的数据显示在图像中

import pandas as pd
df1 = pd.read_excel('frame1.xlsx')
df2 = pd.read_excel('frame2.xlsx')

df = pd.merge(df2, df1[['ID','datafield1','datafield2']], on = 'ID', how = 'left')

print(df)

在此处输入图像描述


推荐阅读