如何从一个熊猫列创建一个长矩阵

时间:2019-08-09 16:06:25

标签: python-3.x

我试图基于熊猫数据框中的一个索引列创建一个矩阵。我在下面列出了我要完成的工作。我以为Pandas中会有一个简单的转置功能。<​​/ p>

这是我尝试过的,但没有产生我想要的:

df = pd.read_csv('locations.csv')
df.drop(['Country'],axis=1, inplace=True)

df.home.values


pdf = pd.DataFrame(index=df.home.values, 
columns=df.home.values, 
                 data=(df.home.values == 
 df.home.values[:,None]).astype(int))


print(pdf)

结果是:

       Texas Maine Mass
Texas 
Maine
Mass

这是我的起始数据帧的样子:

df:
Home          lat lon 
Texas         29  30
Maine         43  73
Mass          42  69

这就是我要结束的事情:

 df2:
 Home   lat  lon   Host   lat2 lon2 
 Texas  29   30   Maine   43  73   
 Texas  29   30   Mass    42  69            
 Maine  43  73    Mass    42  69      
 Maine  43  73    Texas   29  30         
 Mass   42  69    Maine   43  73  
 Mass   42  69    Texas   29  30          

我已经研究了numpy数组,但是它们似乎在我试图以长格式创建它的列中生成矩阵。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我要找的不是矩阵,而是排列

permutation

我通过混合使用排列和.merge来获得所需的额外列,从而解决了我的问题。

from itertools import permutations
file4 = 'your_data.xls'
df30 = pd.read_excel(file4)

dfp=pd.DataFrame(df30['locations'])
dft = dfp.from_records(permutations(dfp['locations'], 2), columns=['home','host'])