Python 如何转换和组合两个数据帧

Python 如何转换和组合两个数据帧,python,pandas,loc,Python,Pandas,Loc,我试图将dataframe列分配给.loc函数的行和列。我有一个没有设置索引的数据框df,其中站点和访问作为我的列标题 指数 场地 参观 0 101 访问1 1. 102 访问1 2. 102 访问2 这是一个关于合并的问题,但是应该转换数据帧,以便正确地合并它们 转换数据帧 通过将'Visit 1'和'Visit 2'堆叠到单个列中,将值置于相邻列中,从而将df2转换为一个列 从技术上讲,这些列不需要重命名,如下所述。但是,我认为它使创建 将熊猫作为pd导入 #创建df1 df1=pd

我试图将dataframe列分配给.loc函数的行和列。我有一个没有设置索引的数据框
df
,其中
站点
访问
作为我的列标题

指数 场地 参观 0 101 访问1 1. 102 访问1 2. 102 访问2
  • 这是一个关于合并的问题,但是应该转换数据帧,以便正确地合并它们
转换数据帧
  • 通过将
    'Visit 1'
    'Visit 2'
    堆叠到单个列中,将值置于相邻列中,从而将
    df2
    转换为一个列
  • 从技术上讲,这些列不需要重命名,如下所述。但是,我认为它使创建
将熊猫作为pd导入
#创建df1
df1=pd.DataFrame({'Index':['0','1','2'],'Site':['101','102','102'],'Visit':['Visit 1','Visit 1','Visit 2']})
#删除索引列
df1.drop(列=['Index'],inplace=True)
#显示器(df1)
实地考察
0 101访问1
1 102访问1
2 102访问2
#创建df2
df2=pd.DataFrame({'Index':['101','102'],'Visit 1':['50','100'],'Visit 2':['60','120']})
#显示器(df2)
索引访问1访问2
0   101      50      60
1   102     100     120
#将访问1和访问2堆叠到单个列中
df2=df2.set_index('index').stack().reset_index()
#重命名列
df2.columns=[“站点”、“访问”、“成本”]
#显示器(df2)
实地考察费用
0 101访问1 50
1 101访问2 60
2102参观1100
3 102访问2 120
合并数据帧
cost=df1.merge(df2,on=['Site','Visit'])
#显示(成本)
实地考察费用
0 101访问1 50
1102参观1100
2 102访问2 120
  • 这是一个关于合并的问题,但是应该转换数据帧,以便正确地合并它们
转换数据帧
  • 通过将
    'Visit 1'
    'Visit 2'
    堆叠到单个列中,将值置于相邻列中,从而将
    df2
    转换为一个列
  • 从技术上讲,这些列不需要重命名,如下所述。但是,我认为它使创建
将熊猫作为pd导入
#创建df1
df1=pd.DataFrame({'Index':['0','1','2'],'Site':['101','102','102'],'Visit':['Visit 1','Visit 1','Visit 2']})
#删除索引列
df1.drop(列=['Index'],inplace=True)
#显示器(df1)
实地考察
0 101访问1
1 102访问1
2 102访问2
#创建df2
df2=pd.DataFrame({'Index':['101','102'],'Visit 1':['50','100'],'Visit 2':['60','120']})
#显示器(df2)
索引访问1访问2
0   101      50      60
1   102     100     120
#将访问1和访问2堆叠到单个列中
df2=df2.set_index('index').stack().reset_index()
#重命名列
df2.columns=[“站点”、“访问”、“成本”]
#显示器(df2)
实地考察费用
0 101访问1 50
1 101访问2 60
2102参观1100
3 102访问2 120
合并数据帧
cost=df1.merge(df2,on=['Site','Visit'])
#显示(成本)
实地考察费用
0 101访问1 50
1102参观1100
2 102访问2 120
您还可以与
df2.stack
的索引一起使用,以实现目标

df1=df1.设置索引(“索引”)
df2=df2.设置索引('index'))
df_reuslt=df1.join(df2.stack().rename('Cost'),
on=[“站点”,“访问”])
打印(df_-lt)
#实地考察费用
#索引
#0 101访问1 50
#1102参观1100
#2 102访问2 120
您还可以与
df2.stack
的索引一起使用,以实现目标

df1=df1.设置索引(“索引”)
df2=df2.设置索引('index'))
df_reuslt=df1.join(df2.stack().rename('Cost'),
on=[“站点”,“访问”])
打印(df_-lt)
#实地考察费用
#索引
#0 101访问1 50
#1102参观1100
#2 102访问2 120

FYI:彻底回答问题非常耗时。如果你的问题得到了解决,那就接受最符合你需要的解决方案来表示感谢。这个✔ 低于▲/▼ 箭头,在答案的左上角。如果出现更好的解决方案,则可以接受新的解决方案。你也可以用以下方式投票决定答案的有用性:▲/▼ 阿罗,如果你有15+的声望。如果解决方案不能回答问题,请留下评论。谢谢。仅供参考:彻底回答问题很费时。如果你的问题得到了解决,那就接受最符合你需要的解决方案来表示感谢。这个✔ 低于▲/▼ 箭头,在答案的左上角。如果出现更好的解决方案,则可以接受新的解决方案。你也可以用以下方式投票决定答案的有用性:▲/▼ 阿罗,如果你有15+的声望。如果解决方案不能回答问题,请留下评论。非常感谢。