我有一个空数据框:
dfObj = pd.DataFrame(columns=['combo', 'item1', 'item2', 'group1', 'group2', 'category1', 'category2', 'title1', 'title2'])
然后我将这些值放在单独的变量中:
combo = 'A | B|'
item1 = 'A'
item2 = 'B'
group1 = 'phones'
group2 = 'cases'
cat1 = 'smartphones'
cat2 = 'leather cases'
title1 = 'Samsung galaxy S9+'
title2 = 'Casey for S9+'
我想以某种方式获得一个数据帧行,稍后我可以将其附加到我的数据帧中。现在我正在经历一个 for 循环并使用
.iloc[]
将值放入特定位置,但是有没有更优化的方法..?
创建变量列表,在循环中分配给嵌套列表,最后传递给
DataFrame
构造函数一次:
L = [combo, item1, item2, group1, group2, cat1, cat2, title1, title2]
cols = ['combo', 'item1', 'item2', 'group1', 'group2',
'category1', 'category2', 'title1', 'title2']
#simulate loop
out = []
for i in range(2):
out.append(L)
dfObj = pd.DataFrame(out, columns=cols)
print (dfObj)
combo item1 item2 group1 group2 category1 category2 \
0 A | B| A B phones cases smartphones leather cases
1 A | B| A B phones cases smartphones leather cases
title1 title2
0 Samsung galaxy S9+ Casey for S9+
1 Samsung galaxy S9+ Casey for S9+
另一个解决方案是创建字典:
d = {'combo': combo, 'item1': item1, 'item2': item2, 'group1': group1,
'group2': group2, 'category1': cat1, 'category2': cat2,
'title1': title1, 'title2': title2}
print (d)
out = []
for i in range(2):
out.append(d)
dfObj = pd.DataFrame(out)
print (dfObj)
category1 category2 combo group1 group2 item1 item2 \
0 smartphones leather cases A | B| phones cases A B
1 smartphones leather cases A | B| phones cases A B
title1 title2
0 Samsung galaxy S9+ Casey for S9+
1 Samsung galaxy S9+ Casey for S9+
data='''
combo = 'A | B|'
item1 = 'A'
item2 = 'B'
group1 = 'phones'
group2 = 'cases'
cat1 = 'smartphones'
cat2 = 'leather cases'
title1 = 'Samsung galaxy S9+'
title2 = 'Casey for S9+'
'''
df1=pd.read_csv(io.StringIO(data),sep='\s{2,}',dtype=None,names=['col1'])
pd.Series(eval("dict({})".format(df1.agg(','.join).squeeze()))).to_frame().T
combo item1 item2 group1 group2 cat1 cat2 \
0 A | B| A B phones cases smartphones leather cases
title1 title2
0 Samsung galaxy S9+ Casey for S9+