![](/img/trans.png)
[英]How to combine multiple columns into one long column using python and pandas
[英]Pandas, how to combine multiple columns into an array column
我需要將一個組合列作為該行所有值的連接。
來源:
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)
問題:我實際上有很多列,運行時間似乎太長了。 有沒有更好的辦法。
df
a b
0 1 2
1 2 3
2 3 4
如果要將一列列表添加為單個列,則需要調用.values
屬性,將其轉換為嵌套列表,然后將其分配回來 -
df['combine'] = df.values.tolist()
# or,
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
造成直接不起作用,因為pandas
特殊情況numpy的陣列,從而導致不良后果,
df['combine'] = df[['a', 'b']].values
ValueError: Wrong number of items passed 2, placement implies 1
一些注意事項 -
盡量不要使用apply
/ transform
。 它只是一個方便的函數,旨在隱藏循環的應用程序,而且速度很慢,沒有任何性能/矢量化優勢
就 Pandas 而言,保留 `objects 列不會帶來性能提升,所以除非目標是顯示數據,否則盡量避免它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.