首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >expand.grid.df与python中的功能类似

expand.grid.df与python中的功能类似
EN

Stack Overflow用户
提问于 2018-09-25 23:53:40
回答 1查看 0关注 0票数 0
import numpy as np
import pandas as pd
dat1 = pd.DataFrame({
 'Var1' : [1,2],
 'Var2' : [3,3]
})
dat2 = pd.DataFrame({
 'Var1' : [4,4],
 'Var2' : [5,6]
})

我希望R中类似的expand.grid.df功能在python中合并这两个数据帧。请注意,在我的实际情况中,我有更多列。

expand.grid.df < - function(...)Reduce(function(...)merge(...,by = NULL),list(...))

所以如果我给一个函数说expand_grid_df(dat1,dat2)Result应该是这样的。

Var1_x Var1_y Var2_x Var2_y

1      4       3      5

2      4       3      5

1      4       3      6

2      4       3      6

所以就像np.meshgrid处理数据帧一样。该函数应该适用于dataframe中的任意数量的列。

编辑:我能够完成它看到下面,但有一个更优雅和高性能的方式?

def myexpand_grid(x, y):
    xG, yG = np.meshgrid(x, y) # create the actual grid
    xG = xG.flatten() # make the grid 1d
    yG = yG.flatten() # same
    return ( xG, yG)

df2 = pd.DataFrame()
for i in range(len(dat1.columns)):
    name = dat1.columns[i]
    x, y = myexpand_grid(dat1[name],dat2[name])
    df2[name + '_x'] = x
    df2[name + '_y'] = y
EN

回答 1

Stack Overflow用户

发布于 2018-09-26 09:36:27

IIUC,

n = dat1.add_suffix('_x').join(dat2.add_suffix('_y'))

    Var1_x  Var2_x  Var1_y  Var2_y
0   1       3       4       5
1   2       3       4       6

当然,总是可以对列进行排序。

n.reindex(sorted(n.columns), axis=1)

    Var1_x  Var1_y  Var2_x  Var2_y
0   1       4       3       5
1   2       4       3       6
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档