簡體   English   中英

Pandas DataFrame中列的值列表

[英]List of values to Columns in Pandas DataFrame

我有一個DataFrame,其中的一列具有值列表(每個值都是一個要素的值)。 現在,我需要將這些值列表轉換為每一列。
例如:DataFrame有兩列,其中data列是值列表

  data , Time [1,2,3,4], 12:34 [5,6,7,8], 12:36 [9,1,2,3], 12:45 

我需要將其轉換為

例如:

   data0 data1 data2 data3 Time
    1   ,  2  ,  3  ,  4  , 12:34    
    5   ,  6  ,  7  ,  8  , 12:36    
    9   ,  1  ,  2  ,  3  , 12:45

我如何有效地做到這一點?

numpy
通過直接在值上使用np.column_stack我們可以得到非常快速的解決方案。 剩下要做的唯一一件事就是將列縫合在一起

v = np.column_stack([df.data.values.tolist(), df.Time.values])
c = ['data{}'.format(i) for i in range(v.shape[1] - 1)] + ['Time']
pd.DataFrame(v, df.index, c)

  data0 data1 data2 data3   Time
0     1     2     3     4  12:34
1     5     6     7     8  12:36
2     9     1     2     3  12:45

時間

%%timeit
pd.DataFrame(df['data'].values.tolist()).add_prefix('data').join(df['Time'])
1000 loops, best of 3: 1.13 ms per loop

%%timeit
v = np.column_stack([df.data.values.tolist(), df.Time.values])
c = ['data{}'.format(i) for i in range(v.shape[1] - 1)] + ['Time']
pd.DataFrame(v, df.index, c)
10000 loops, best of 3: 183 µs per loop

您可以使用DataFrame構造函數通過values + tolistadd_prefix和最后一個joinTime將列data轉換為numpy array

df = pd.DataFrame(df['data'].values.tolist()).add_prefix('data').join(df['Time'])
print (df)
   data0  data1  data2  data3   Time
0      1      2      3      4  12:34
1      5      6      7      8  12:36
2      9      1      2      3  12:45

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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