質問編集履歴

2

一部修正

2022/02/22 07:19

投稿

Kazu
Kazu

スコア5

test CHANGED
@@ -1 +1 @@
1
- Python Pandas利用時データ表示を整えたい
1
+ Python Pandas利用したcsv読出の不具合
test CHANGED
@@ -1,16 +1,15 @@
1
1
 
2
2
 
3
3
  ### 前提・実現したいこと
4
- tkinerを利用した検索画面を作成しております。
5
- csv読込まで問題無く可能となり検索キーワードによる
6
- 検索も可能となっているのですが
7
- 検索後に表示される数字(文字列)の先頭0が消えてしまいます。
8
- 000001⇒1と表示 000001と表示したい
9
- また、1部の数字には1⇒1.0となってしまう。
10
4
 
11
- 実際に行いたいことは
5
+ 実際に行いたいことは黄色枠部分の表示ですが
6
+ ID部分は全6桁で1であれば000001と表示し
7
+ 枝番は全3桁で1であれば001と表示したい
12
- self.colname_list 内の["ID","枝番"]は それぞれ6桁、3桁で000001001としたい
8
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-02-22/d35e780b-39d6-46eb-a259-b165fddc5029.png)
9
+
10
+ 読み込んでいるCSVファイルは下記内容となっております。
13
-            ["登録者社員番号","プロェクト番号","金額"]については数字後の.0ではなく整数値を表示したい
11
+ ![イメー説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-02-22/b66fac90-37a6-41b1-a32f-8de069ece45d.png)
12
+
14
13
 
15
14
  この内容についてご教授いただければ幸いです。
16
15
  よろしくお願い致します。
@@ -18,6 +17,22 @@
18
17
  ### 該当のソースコード
19
18
 
20
19
  ```python
20
+
21
+ #EXCElファイルからCSVファイル作成
22
+   data = pd.read_excel(excel_search + '.xlsx')
23
+ data.to_csv(excel_search + '.csv', encoding="utf-8", index=False)
24
+
25
+ #検索用画面をサブウインドウで構築
26
+ class SubWindow(tkm.Frame):
27
+ def __init__(self,master,num):
28
+ super().__init__(master)
29
+ self.pack()
30
+ master.geometry("1000x400+400+300")
31
+ master.title("検索画面")
32
+ master.grab_set()
33
+ self.set_data()
34
+ self.create_widgets()
35
+
21
36
  #csvファイル読込
22
37
  def set_data(self):
23
38
  self.data = pd.read_csv("/search.csv", dtype=object, encoding="utf-8", na_filter=False)
@@ -25,17 +40,61 @@
25
40
  self.width_list = [10, 15, 30, 20, 20, 40, 10, 200, 50]
26
41
  self.search_col = "検索キーワード"
27
42
 
43
+ def create_widgets(self):
44
+ self.pw_main = ttk.PanedWindow(self.master, orient="vertical")
45
+ self.pw_main.pack(expand=True, fill=tkm.BOTH, side="left")
46
+ self.pw_top = ttk.PanedWindow(self.pw_main, orient="horizontal", height=25)
47
+ self.pw_main.add(self.pw_top)
48
+ self.pw_bottom = ttk.PanedWindow(self.pw_main, orient="vertical")
49
+ self.pw_main.add(self.pw_bottom)
50
+ self.creat_input_frame(self.pw_top)
51
+ self.create_tree(self.pw_bottom)
52
+
53
+ def creat_input_frame(self, parent):
54
+ fm_input = ttk.Frame(parent, )
28
- #CSVファイル作成
55
+ parent.add(fm_input)
56
+ lbl_keyword = ttk.Label(fm_input, text="キーワード", width=7)
57
+ lbl_keyword.grid(row=1, column=1, padx=2, pady=2)
58
+ self.keyword = tkm.StringVar()
59
+ ent_keyword = ttk.Entry(fm_input, justify="left", textvariable=self.keyword)
60
+ ent_keyword.grid(row=1, column=2, padx=2, pady=2)
61
+ ent_keyword.bind("<Return>", self.search)
62
+
63
+ def create_tree(self, parent):
64
+ self.result_text = tkm.StringVar()
65
+ lbl_result = ttk.Label(parent, textvariable=self.result_text)
66
+ parent.add(lbl_result)
67
+ self.tree = ttk.Treeview(parent)
68
+ self.tree["column"] = self.colname_list
69
+ self.tree["show"] = "headings"
70
+ self.tree.bind("<Double-1>", self.onDuble)
71
+ for i, (colname, width) in enumerate(zip(self.colname_list, self.width_list)):
72
+ self.tree.heading(i, text=colname)
73
+ self.tree.column(i, width=width)
74
+ parent.add(self.tree)
75
+
76
+ def search(self, event=None):
77
+ keyword = self.keyword.get()
78
+ result = self.data[self.data[self.search_col].str.contains(keyword, na=False)]
79
+ self.update_tree_by_search_result(result)
80
+
29
-   data = pd.read_excel(excel_search + '.xlsx')
81
+ def update_tree_by_search_result(self, result):
82
+ self.tree.delete(*self.tree.get_children())
83
+ self.result_text.set(f"検索結果:{len(result)}")
84
+ for _, row in result.iterrows():
30
- data.to_csv(excel_search + '.csv', encoding="utf-8", index=False)
85
+ self.tree.insert("", "end", values=row[self.colname_list].to_list())
86
+
87
+ def onDuble(self, event):
88
+ for item in self.tree.selection():
89
+ print(self.tree.item(item)["values"])
31
90
 
32
91
 
33
92
  ```
34
-
35
93
  ### 試したこと
36
- dtypeをstrに変更したが変わらない。
37
94
  作成されたCSVファイルを一度開き、名前付けて保存【CSV UTF-8】で再度作成した場合には
38
- 上記内容が解消されました
95
+ 上記内容が解消されました
96
+ pythonでExcelファイルからCSV吐き出しし読込動作となると上記結果となってしまいます。
39
97
 
40
98
 
41
99
 
100
+

1

2022/02/22 04:02

投稿

Kazu
Kazu

スコア5

test CHANGED
File without changes
test CHANGED
@@ -27,7 +27,7 @@
27
27
 
28
28
  #CSVファイル作成
29
29
    data = pd.read_excel(excel_search + '.xlsx')
30
- data.to_csv(excel_search + '.csv', encoding="utf-8", index=False) #電子請求書検索ファイル.csvとして保存
30
+ data.to_csv(excel_search + '.csv', encoding="utf-8", index=False)
31
31
 
32
32
 
33
33
  ```
@@ -37,7 +37,5 @@
37
37
  作成されたCSVファイルを一度開き、名前付けて保存【CSV UTF-8】で再度作成した場合には
38
38
  上記内容が解消されました。
39
39
 
40
- ### 補足情報(FW/ツールのバージョンなど)
41
40
 
42
- ここにより詳細な情報を記載してください。
43
41