質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1554閲覧

読み込んだ CSV の行をソートして HTML で出力したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/05/18 13:39

●前提・実現したいこと
Windows に Python 3.7.3 と Pandas をインストールしている環境で、
以下の CSV を読み込み、HTML で出力する際、項目が同じものをソートして出力したいのですが可能でしょうか。
sort_values 関数というものを使うのかなと思っているのですが、読み込んだ CSV の項目の
一致性を確認して、その結果に基づきソートするといった動作をさせたい場合、
どのように書けばよいかどうしてもわかりません。

■CSV[行の整列.csv]の内容

項目,本文 朝ごはんについて,朝はごはんが食べたい。 昼ごはんについて,昼は洋食が食べたい。 夜ごはんについて,夜はデザートにアイス食べたい。 朝ごはんについて,朝ごはんはしっかり食べたい。 昼ごはんについて,昼は外食が多い。 夜ごはんについて,夜はお惣菜中心。

■上記 CSV を読み込んだ後、以下のようにソートしてHTML出力したいです。

項目,本文 朝ごはんについて,朝はごはんが食べたい。 朝ごはんについて,朝ごはんはしっかり食べたい。 昼ごはんについて,昼は洋食が食べたい。 昼ごはんについて,昼は外食が多い。 夜ごはんについて,夜はお惣菜中心。 夜ごはんについて,夜はデザートにアイス食べたい。

●該当のソースコード

python

1import pandas as pd 2import csv 3pd.set_option('display.max_rows', 12000) 4pd.set_option('display.width', 12000) 5pd.set_option("display.max_colwidth", 12000) 6 7df = pd.read_csv(r'C:\Python\行の整列.csv', encoding='cp932', names=["項目", "内容"], usecols=[0, 1], skiprows=[0], skipfooter=0, engine='python') 8df = df.replace({'\n': '<br>'}, regex=True) 9df = df.replace({'\r': ''}, regex=True) 10df.to_html(r'C:\Python\行の整列.html',escape=False)

恐れ入りますが、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

by="項目"を指定すれば、組を維持したまま項目だけでソートします。安定ソートなので、本文の方は「同じ項目の間では」順番が変わりません。

python

1import io 2import pandas as pd 3 4data = """ 5項目,本文 6朝ごはんについて,朝はごはんが食べたい。 7昼ごはんについて,昼は洋食が食べたい。 8夜ごはんについて,夜はデザートにアイス食べたい。 9朝ごはんについて,朝ごはんはしっかり食べたい。 10昼ごはんについて,昼は外食が多い。 11夜ごはんについて,夜はお惣菜中心。 12""" 13 14df = pd.read_csv(io.StringIO(data)) 15df.sort_values(by="項目", inplace=True) 16print(df)
項目 本文 2 夜ごはんについて 夜はデザートにアイス食べたい。 5 夜ごはんについて 夜はお惣菜中心。 1 昼ごはんについて 昼は洋食が食べたい。 4 昼ごはんについて 昼は外食が多い。 0 朝ごはんについて 朝はごはんが食べたい。 3 朝ごはんについて 朝ごはんはしっかり食べたい。

文字列なのでUnicodeコードポイントが辞書式順序で比較されるのですが、夜昼朝の順に番号が若いのですね。

>>> [ord(x) for x in "朝昼夜"] [26397, 26172, 22812]

ascending=Falseで降順ソートにできます。

python

1df.sort_values(by="項目", ascending=False, inplace=True)
項目 本文 0 朝ごはんについて 朝はごはんが食べたい。 3 朝ごはんについて 朝ごはんはしっかり食べたい。 1 昼ごはんについて 昼は洋食が食べたい。 4 昼ごはんについて 昼は外食が多い。 2 夜ごはんについて 夜はデザートにアイス食べたい。 5 夜ごはんについて 夜はお惣菜中心。

投稿2019/05/18 14:49

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/18 15:14

ありがとうございます!できました! すごすぎて、まだ全然理解できていないので、これから勉強します。 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問