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")
我真的很感谢你的意见和建议,以实现我自己的想法!
答案 0 :(得分:1)
您需要df
和df_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