Jac*_*iel 4 python numpy dataframe pandas
我有一个DataFrame,其中一列有值列表(每个值都是一个特征的值).现在我需要将这些值列表转换为每列.
例如:DataFrame有两列,其中数据列是值列表
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
我怎样才能有效地做到这一点?
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
Run Code Online (Sandbox Code Playgroud)
timeit
%%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
Run Code Online (Sandbox Code Playgroud)
您可以使用DataFrame构造函数转换列data到numpy array由values+ tolist,add_prefix和最后一个join栏Time:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2287 次 |
| 最近记录: |