我试图基于熊猫数据框中的一个索引列创建一个矩阵。我在下面列出了我要完成的工作。我以为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数组,但是它们似乎在我试图以长格式创建它的列中生成矩阵。任何帮助将不胜感激!
答案 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'])