2017-04-04 15 views
-2

pythonを使ってアイテムのリストを正方行列形式に変換したいと思います。 パンダでpivot_tableを試しましたが、動作しませんでした。ここで リストを正方行列に転記する方法

は私のコード、2つの列をCSVファイルに入力中である

with open(path_to_file,"r") as f: 
    reader = csv.reader(f,delimiter = ',') 
    data = list(reader) 
    row_count=len(data) 
    print(row_count - 1) 


df = pd.read_csv(path_to_file) 


groups = df.groupby(['transmitter chan', 'receiver chan']) 
max_for_AS = defaultdict(int) 
df = df.assign(ID = [0 + i for i in xrange(len(df))]) 

print(df) 

for g in groups: 
    transmitter, count = g[0][0], len(g[1]) 
    max_for_AS[ transmitter ] = max(max_for_AS[transmitter], count) 

for g in groups: 
    transmitter, receiver, count = g[0][0], g[0][1], len(g[1]) 
    if count == max_for_AS[ transmitter ]: 
    dataFinal = "{} , {} , {}".format(transmitter, receiver, count) 
     print(dataFinal) 

データ:

V1 V2 count 
0 A R  1 
1 Z T  4 
2 E B  9 
3 R O  8 
4 T M  7 
5 Y K  5 
6 B I  6 
7 T Z  2 
8 A O  7 
9 Y B  8 
+2

あなたのデータの写真ではなく、あなたのデータを投稿してください。また、あなたがこれまでに試みたコードをお願いします。 – James

+0

は、この数が少ない配列ですか?パンダのデータフレーム?何とか試したコードを投稿できますか? –

答えて

0

私はあなたが必要だと思う:

df = pd.read_csv(path_to_file) 
df1 = df.pivot(index='V1',columns='V2',values='count').fillna(0).astype(int) 

df1 = df.set_index(['V1','V2'])['count'].unstack(fill_value=0) 

しかしV1V2で重複がそれらを集約が必要な場合:

df1 = df.pivot_table(index='V1',columns='V2',values='count', fill_value=0) 

df1 = df.groupby(['V1','V2'])['count'].mean().unstack(fill_value=0) 
#for change ordering add reindex 
df1 = df1.reindex(index=df.V1.unique(), columns=df.V2.unique()) 
print (df1) 
V2 R T B O M K I Z 
V1       
A 1 0 0 7 0 0 0 0 
Z 0 4 0 0 0 0 0 0 
E 0 0 9 0 0 0 0 0 
R 0 0 0 8 0 0 0 0 
T 0 0 0 0 7 0 0 2 
Y 0 0 8 0 0 5 0 0 
B 0 0 0 0 0 0 6 0 
+0

小さなアドバイス - [コード(またはそれらへのリンク)の画像を投稿しない](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-オン・ザ・アサイン・ア・質問) – jezrael

+0

アドバイスをいただきありがとうございます。 –

0

それはあなたが達成しようとしているかは明らかではありませんので、I'LLこの答えに前向きに近づく。

pandas dataframeがあるとします。 df=df.values

  • はステップの結果にnumpy.transposeを使用して転置を探す:それはnumpyを使用して、それの転置を取得するには、本当ならば、あなたは、

    1. は、このようなnumpy ndarraydataframe(DF)を変換する必要がある場合があります1

    編集:

    良い方法。あなたもすることができますdf.transpose()

  • +0

    あなたの提案をありがとう、私は今それを試してみましょう。 –

    +0

    'df.transpose'を試してください – ngub05