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

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

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

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

pandas

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

Q&A

解決済

3回答

1572閲覧

DataFrameの特定カラム内の文字列操作。

takaekokaz

総合スコア3

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2020/07/23 09:00

excelシートをdataframeとして読み込んだ際、特定のカラムのデータに小数点と0が末尾についてきます。

excel(xlms)の元データ。

EMP#列
281267
(空白)
3896985
5229522
3896985

pandas.read_excelで読み込んだ後表示されるデータ。
0 281267.0
1 nan
2 3896985.0
3 5229522.0
4 3896985.0
Name: EMP#, dtype: object

下記のように、この「.0」を削除し、小数点以下の表示がないデータに変換したいのですがどうすればよいでしょうか?

0 281267
1 nan
2 3896985
3 5229522
4 3896985
Name: EMP#, dtype: object

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

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

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

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

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

guest

回答3

0

以下のように読み込み時に型を指定することができます。

Python

1import pandas as pd 2 3df = pd.read_excel('test.xlsm', dtype={'EMP#':str}) 4print(df) 5print(df['EMP#']) 6""" 70 281267 81 NaN 92 3896985 103 5229522 114 3896985 12Name: EMP#, dtype: object 13"""

投稿2020/07/24 22:34

can110

総合スコア38341

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

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

takaekokaz

2020/07/26 14:45

can110さま ご回答ありがとうございます。 別の元データのexcelの別の列ではなぜかfloat型でしたので、 0 281267.0 1 NaN 2 3896985.0 3 5229522.0 4 3896985.0 Name: IDnum#, dtype: float64 ご回答の通り、dtypeで型を指定して読み込むと実現できました。 0 281267 1 NaN 2 3896985 3 5229522 4 3896985 Name: IDnum#, dtype: object
guest

0

ベストアンサー

現状および実現されたいことの真意を汲み取りきれていませんが、下記の通り仮定して回答いたします。

  • 現状:nan以外のデータは文字列(str)型で読み込まれている。
  • 実現されたいこと:文字列のまま .0 表記を削除する。(数値型にはしない)

python

1# 仮にdfというデータフレームの'EMP#'列だとして 2df['EMP#'] = df['EMP#'].apply(lambda x: x.split('.')[0])

仮にやりたいことが異なる場合(例えば文字列ではなく整数に変換したいなど)は返答を下さい。

投稿2020/07/24 22:14

tenkoh

総合スコア51

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

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

takaekokaz

2020/07/26 14:22

ご回答ありがとうございます。 tenkohさまの仮定の通りです。 数値型と思い込んでいましたが、typeはstrでした。 tenkohさまのご回答の通りにしたところ、 0 5172690 1 5103301 2 420299 3 5167510 4 5172688 ... 175 3896965 176 3896966 177 3896971 178 3896985 179 3897587 Name: EMP#, Length: 180, dtype: object となりました。 本当にありがとうございました。
guest

0

欠損値を置き換えるか削除していいならastype
pandasのデータ型dtype一覧とastypeによる変換(キャスト)

欠損値をそのままに他を置き換えたいならapplyをオススメします。
pandasで要素、行、列に関数を適用するmap, applymap, apply

投稿2020/07/23 10:07

jeanbiego

総合スコア3966

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

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

takaekokaz

2020/07/26 14:34

jeanbiegoさま ご回答ありがとうございます。 applyについての記事を勉強させていただきました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問