我有一系列numpy数组生成,例如:
import random
N = 5
data = [[random.random() for i in range(N)] for j in range(N)]
names = ['a','b','c','d','e']
df = pd.DataFrame(data)
df = df.transpose()
df.columns = names
即:
a b c d e
0.01 0.03 0.01 0.2 0.04
0.2 0.01 0.02 0.01 0.1
...
我想格式化它,使它看起来像这样:
name value
a 0.01
b 0.03
c 0.01
d 0.2
e 0.04
a 0.2
b 0.01
....
(数据顺序不重要)
我试过pandas dataframe transpose:
df = pd.DataFrame(data)
df = df.transpose()
df.columns = names
但结果如下:
a 0.1 0.2 0.01 0.2
b 0.3 0.1 0.2 0.01
....
关于如何重新格式化numpy数组/ pandas数据帧以获得两列数据的想法?
3 回答
那是你要的吗?
您可以使用numpy.tile作为重复列名称,使用numpy.ravel作为
DataFrame
的展平值:Timings (
len(df) = 1M
):如果需要输出
numpy array
添加numpy.column_stack:您只需要
df
中的所有列concat
. 由于列的名称不同,您需要使用相同的名称设置它们 . 如果没有,pandas
将在concat
结果中添加新列 .