我需要将一个组合列作为该行所有值的连续符。
来源:
pd.DataFrame(data={
'a' : [1,2,3],
'b' : [2,3,4]
})
目标:
pd.DataFrame(data={
'a' : [1,2,3],
'b' : [2,3,4],
'combine' : [[1,2],[2,3],[3,4]]
})
目前的解决方案:
test['combine'] = test[['a','b']].apply(lambda x: pd.Series([x.values]), axis=1)
问题: 我实际上有很多专栏,似乎运行时间太长。这是一种更好的方式。
答案 0 :(得分:1)
cursor.execute(query)
# Python 2.7 and beyond with dictionary comprehension
results = [{key:value for key,value in row.iteritems()} for row in cursor]
# Python 2.6 and before
# results = [dict((key,value) for key,value in row.iteritems()) for row in cursor]
如果要将列列添加为单个列,则需要调用df
a b
0 1 2
1 2 3
2 3 4
属性,将其转换为嵌套列表,然后将其分配回来 -
.values
或者,
df['combine'] = df.values.tolist()
df['combine'] = df[['a', 'b']].values.tolist()
请注意,直接分配df
a b combine
0 1 2 [1, 2]
1 2 3 [2, 3]
2 3 4 [3, 4]
结果不起作用,因为.values
特殊情况 numpy数组,导致不良结果 -
pandas
几个笔记 -
尽量不要使用df['combine'] = df[['a', 'b']].values
ValueError: Wrong number of items passed 2, placement implies 1
/ apply
。它只是一个方便功能,用于隐藏循环的应用程序,并且速度慢,无法提供任何性能/矢量化优势
就大熊猫而言,保留`对象列不会提高性能,所以除非目标是显示数据,否则请尽量避免使用。