下面是在Pandas中使用類似於R的DataFrame的一種方法。我假設您有一個包含數據的DataFrame df
。 (您可以使用pandas.read_table從文件中讀取數據,請參閱:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_table.html)。
首先,使用groupby
按id
對列進行分組。
gps = df.groupby("id")
print gps.groups
Out: {5: [0, 1], 6: [2, 3], 7: [4, 5, 6], 8: [7], 9: [8], 10: [9]}
groups
給出屬於同一個id的行號。
接下來,您將在featureCode
中創建具有行和列名稱作爲唯一值的目標矩陣。
unqFet = list(set(df["featureCode"]))
final = pandas.DataFrame(columns=unqFet, index=unqFet)
final = final.fillna(0)
print final
Out:
PCLI PPLC PPL
PCLI 0 0 0
PPLC 0 0 0
PPL 0 0 0
最後,循環在你的團體和增量正確的價值觀在final
矩陣。
for g in gps.groups.values():
for i in range(len(g)):
for j in range(len(g)):
if i != j:
final[ df["featureCode"][g[i]] ][ df["featureCode"][g[j]] ] += 1
print final
Out:
PCLI PPLC PPL
PCLI 0 3 1
PPLC 3 0 1
PPL 1 1 0
請以可以回答的方式說出您的問題。 – vish
抱歉給您帶來不便。我會盡量改變它,但我的這個問題:http://stackoverflow.com/q/22152856/3371626也是基於此。 – user3371626
我希望現在它的意義。 – user3371626