簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM