bugfix> python > 投稿

私のcsvデータはこれが好きです:

このコードを使用して印刷します。

import pandas as pd
import csv
rs = pd.read_csv(r'D:/Clustering_TOP.csv',encoding='utf-8')
with open('D:/Clustering_TOP.csv','r') as csvfile:
    reader = csv.reader(csvfile)
    rows = [row for row in reader]
csv_title = rows[0]
csv_title = csv_title[1:]
len_csv_title = len(csv_title)
for i in range(len_csv_title):
    for j in range(i,len_csv_title):
        print(str(rs[csv_title[i]].corr(rs[csv_title[j]])), end='\t')
    print()

印刷の結果はこれです、形式は正しくありません:

しかし、実際には、印刷がピラミッドを好むようにしたい、例えば:

コードを変更する方法は?

回答 5 件
  • こんにちは、私は100%確信していませんが、あなたの2番目の問題だと思います。これを試して:

    for i in range(len_csv_title):
        for j in range(i+1):
            print(str(rs[csv_title[i]].corr(rs[csv_title[j]])), end='\t')
        print()
    
    

  • 問題は、2番目の「for」ループにあると思います。範囲は for j in for j in range(len_csv_title) である必要があります 、 range(i,len_csv_title) ではなく 。

  • 以下の行を変更します。

    for j in range(i,len_csv_title):
    
    

    に:

    for j in range(0,i+1):
    
    

  • これは、要求したパターンで開始を印刷するサンプルコードです

    def pyramidpattern(n):
      for i in range(0, n):
        for j in range(0, i+1):
          print("* ",end="")
        print("\r")
    n=5
    pyramidpattern(n)
    
    

    出力:

    * 
    * * 
    * * * 
    * * * * 
    * * * * *
    
    

  • コードには逆バックループが必要です。 forループを変更するだけで機能します

    import pandas as pd
    import csv
    rs = pd.read_csv(r'file',encoding='utf-8')
    with open('file','r') as csvfile:
        reader = csv.reader(csvfile)
        rows = [row for row in reader]
    csv_title = rows[0]
    csv_title = csv_title[1:]
    len_csv_title = len(csv_title)
    for i in range(len_csv_title):
        for j in range(0,i+1):
            print(str(rs[csv_title[i]].corr(rs[csv_title[j]])), end='\t')
        print()
    
    

    Try to change inverse for loop for j in range(0,i+1):

あなたの答え