我目前正在尝试将三角矩阵重塑成这种不同的形式
S&P 500 Russel 2000 Nasdaq Composite
S&P 500 1 0 0
Russel 2000 4 5 0
Nasdaq Composite 7 8 9
0 1
0 S&P 500 S&P 500
1 Russel 2000 S&P 500
2 Nasdaq Composite S&P 500
3 S&P 500 Russel 2000
4 Russel 2000 Russel 2000
...
也就是说,我正在尝试为每个索引创建重复的列,反之亦然。
我使用了一种称为J的面向数组的语言,但是对于python numpy来说我还是很陌生。你们可以帮我解决这个问题吗?
预先感谢=]
答案 0 :(得分:1)
首先,pandas更容易解决这个问题。
我已经进行了设置,可能会有所帮助,但是如果您真的不喜欢使用Numpy,那么它将不是解决问题的适当方法。
首先,我为您的numpy数组设置了一个类似的DataFrame对象:
$ import pandas as pd
$ df = pd.DataFrame(columns=['a','b','c'], index=['a','b','c'])
a b c
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
然后,我用您要求的值填充了它,尽管我没有使用它们。
$ df['a'] = [1, 4, 7]
$ df['b'] = [0, 5, 8]
$ df['c'] = [0, 0, 9]
a b c
a 1 0 0
b 4 5 0
c 7 8 9
最后,我只是简单地获取了索引和列,并使用了product中的itertools函数将每个组合都放入一个元组列表中。
$ from itertools import product
$ p = product(df.columns.values, df.index.values)
$ new_df = pd.DataFrame([i for i in p])
0 1
0 a a
1 a b
2 a c
3 b a
4 b b
5 b c
6 c a
7 c b
8 c c
我将看一下Pandas文档。它们具有许多功能,可以按您感兴趣的方式操作数据框。