在熊猫中结合载体

时间:2018-01-31 17:21:06

标签: python pandas merge

Python和Pandas对我而言是新的,我需要帮助。

考虑以下数据集:

df_t = df [df['Active']=='T']

我需要通过active = T的行来扩充每个组(id)的每一行,这意味着

for sample in df:
  for t in df_t:
    df_new = sample + t  ( vectors of df and df_t join together)
    Df_new = concat(df_new,Df_new)

我有一个想法,我无法实现它。 首先通过过滤数据制作新数据集。 获取活动列等于T的所有行,并将其保存在新的df中。

p_count = shopify.Product.count()
p_max_pages = int(p_count / 250) + 1
titles = []
for page in range(1, p_max_pages + 1):
    products = shopify.Product.find(page=page, limit=250)
    for product in products:
        titles.append(product.title)

然后为每行df添加一个新的矢量形式df_t数据集。 这意味着:

shopify.Product.find(title="My Product")

我真的很感谢你的意见和建议,以实现我自己的想法!

1 个答案:

答案 0 :(得分:1)

您需要dfdf_t的caterian十字架产品。您可以使用a bit of a hack执行此操作:

df['cross'] = 1
df_t['cross'] = 1
df_new = pd.merge(df,df_t.drop('Active',axis=1),on='cross').drop('cross',axis=1)

全部放在一起:

import numpy as np
import pandas as pd
df = pd.DataFrame(data=np.array([['a',1, 2, 3,'T'], ['b',4, 5, 6,'T'],
                                 ['b',9, 9, 39,'T'],
                                 ['c',16, 17 , 18,'N']])
                  , columns=['id','A', 'B', 'C','Active'])
df_t = df [df['Active']=='T']
df['cross'] = 1
df_t['cross'] = 1
df_new = pd.merge(df,df_t.drop('Active',axis=1),on='cross').drop('cross',axis=1)

结果:

>>> df_new
   id_x A_x B_x C_x Active id_y A_y B_y C_y
0     a   1   2   3      T    a   1   2   3
1     a   1   2   3      T    b   4   5   6
2     a   1   2   3      T    b   9   9  39
3     b   4   5   6      T    a   1   2   3
4     b   4   5   6      T    b   4   5   6
5     b   4   5   6      T    b   9   9  39
6     b   9   9  39      T    a   1   2   3
7     b   9   9  39      T    b   4   5   6
8     b   9   9  39      T    b   9   9  39
9     c  16  17  18      N    a   1   2   3
10    c  16  17  18      N    b   4   5   6
11    c  16  17  18      N    b   9   9  39