带有标签的Python Dataframe单行

时间:2017-07-05 16:53:10

标签: python-3.x pandas

import pandas as pd
data = ["X", "Y", "Z", "A", "B"]
label = ['a','b','c','d','e']
df = pd.DataFrame(data, columns=label)
print(df)

我希望将数据帧设为:

a b c d e 
X Y Z A B

我正在

ValueError: Shape of passed values is (1, 5), indices imply (5, 5)

如何修复此问题以获得所需的数据框?

2 个答案:

答案 0 :(得分:3)

将其作为列表列表传递。

In [439]: pd.DataFrame([data], columns=label)
Out[439]:
   a  b  c  d  e
0  X  Y  Z  A  B

答案 1 :(得分:1)

如果是大数据,您可以使用一些复杂但非常快速的解决方案 - 将列表转换为numpy array然后reshape

df = pd.DataFrame(np.array(data).reshape(-1, len(data)), columns=label)
print(df)
   a  b  c  d  e
0  X  Y  Z  A  B

<强>计时

N = 100
data = ["X", "Y", "Z", "A", "B"] * N
label = ['a','b','c','d','e'] * N

In [30]: %timeit pd.DataFrame([data], columns=label)
10 loops, best of 3: 178 ms per loop

In [31]: %timeit pd.DataFrame(np.array(data).reshape(-1, len(data)), columns=label)
1000 loops, best of 3: 1.06 ms per loop

N = 1000

In [35]: %timeit pd.DataFrame([data], columns=label)
1 loop, best of 3: 1.7 s per loop

In [36]: %timeit pd.DataFrame(np.array(data).reshape(-1, len(data)), columns=label)
100 loops, best of 3: 3.83 ms per loop