対称行列変換

表 – 3 つの列を切り替えます

次のような表形式にするために参加してください。

上長 重い 結石 開ける クマ トング
0 75 33 45 166 67 52 69 3
75 0 46 21 214 70 64 221 70
上長 33 46 0 55 31 2 0 2 1
重い 45 21 55 0 29 0 0 0 0
結石 166 214 31 29 0 8 8 9 5
開ける 67 70 2 0 8 0 0 5 0
クマ 52 64 0 0 8 0 0 12 0
トング 69 221 2 0 9 5 12 0 19
3 70 1 0 5 0 0 19 0

これを 3 列形式に変換します。

ソース 目標 価値
75
上長 334
重い 45
結石 166

では、どうやってそれを行うのですか?

Excel ファイルを読み取り、3 つの列に変換するための pandas ライブラリ

import pandas as pd

# 读取Excel文件
df = pd.read_excel('网络.xlsx', index_col=0)

# 删除0距离值
df = df[df != 0].dropna(how='all').dropna(axis=1, how='all')

# 将表格转换为三列式
triplets = []
for row in df.index:
    for col in df.columns:
        if not pd.isna(df.loc[row, col]):
            triplets.append([row, col, df.loc[row, col]])

# 将三列式保存到Excel文件中
triplets_df = pd.DataFrame(triplets, columns=['起始城市', '目标城市', '距离值'])
triplets_df.to_excel('network.xlsx', index=False)

このコードは、「web.xlsx」という Excel ファイルを読み取り、3 列形式に変換します。距離値が 0 のエントリを削除し、テーブル内の都市の各ペア間の距離値を個別の行としてリストに追加します。最後に、このリストを新しい pandas DataFrame に変換し、「network.xlsx」という名前の Excel ファイルに保存します。index=FalseDataFrame インデックスを Excel ファイルに書き込まないように設定したことに注意してください。

上記の操作で 3 列の変換対称行列を実装するにはどうすればよいですか?

Python と pandas ライブラリを使用して、3 列形式を Excel ファイルの表形式に変換できます。

サンプルコードは次のとおりです。

import pandas as pd

# 读取三列式
df = pd.read_excel('三列式.xlsx')

# 将三列式转换为表格格式
pivot_table = df.pivot_table(index='起始城市', columns='目标城市', values='距离值')

# 将表格保存为Excel文件
pivot_table.to_excel('网络.xlsx')

このコードは、「three-column.xlsx」という Excel ファイルを読み取り、それを表形式に変換します。出発地と目的地の都市をインデックスと列のラベルとして使用し、距離の値をセルの値として使用します。最後に、テーブルを「web.xlsx」という Excel ファイルに保存します。

3 つの列に重複する都市のペアがある場合は、pivot_tableメソッドを使用するときに、重複する値を結合する方法を指定する必要があることに注意してください。デフォルトでは、pivot_tableメソッドは平均を使用して重複する値を結合しますが、パラメータを使用して、 などaggfuncの他の集計関数を指定できますminmaxsum

しかし、生成されると多くの null 値が存在することがわかったので、null 値をブレーキして 0 を生成するにはどうすればよいでしょうか? Excelは直接操作できますが、特定のコードを実装するにはどうすればよいですか?

#在将三列式转换为表格格式时,如果缺少某些值,则可以使用fillna()方法将缺失值填充为0。
import pandas as pd

# 读取三列式
df = pd.read_excel('三列式.xlsx')

# 将三列式转换为表格格式,并将缺失值填充为0
pivot_table = df.pivot_table(index='起始城市', columns='目标城市', values='距离值').fillna(0)

# 将表格保存为Excel文件
pivot_table.to_excel('网络.xlsx')

このコードは、「three-column.xlsx」という Excel ファイルを読み取り、それを表形式に変換します。出発地と目的地の都市をインデックスと列のラベルとして使用し、距離の値をセルの値として使用します。次に、fillna()メソッドを使用して欠損値を 0 で埋めます。最後に、テーブルを「web.xlsx」という Excel ファイルに保存します。

3 つの列に都市のペアが重複している場合、pivot_tableメソッドを使用すると、欠損値が NaN で自動的に埋められることに注意してください。したがって、テーブルを Excel ファイルに保存する前に、fillna()メソッドを使用して NaN を 0 で埋めてエラーを回避する必要があります。

データとコードが必要な場合は、私の WX:Jdaystudy に注意してください

おすすめ

転載: blog.csdn.net/weixin_43886163/article/details/129405189