
文字列データを数値データに変換する方法について教えてください。
下記のコードで、pandasでデータを読み込んで、特定のカラムの特定の行と列を抽出しているのですが、
import pandas as pd
data = pd.read_csv("XXXXX.txt",sep='\t',header=None)
a_list = data[data[2]=='chr1']
exonStarts = a_list.iloc[10,9].split(',')
exonStarts
出力はこうなります。
['34610', '35276', '35720', '']
.astype(int)を使って変換できるとありましたが、うまくできません。
どなたかわかる方宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
No.1です。
お礼に対して。
数値に変換できないもの
・そもそも数値ではない英字(eは指数としてやり方によっては判断されるかもですが)。
・数字と英字の混合
・全角文字で数字にならないもの(ひらがな・カタカナ・漢字【漢数字については調べ切れてません】)。
・あとはキーボードに点在する記号類(その中で通常使用される +,-,. などは省かれる【それ以外についてはテストしてみてって所も】)
pandas につきましてはそもそもが python 自体インストールはしていても『Pythonの絵本』を10ページ眺めた程度なので、拡張モジュールについては
その都度ググって検索されたサイトを見て改良してみる(稀に挫折する)位の浅い知識です。
なのでエラーの理由と言う点では何とも言えませんが、
>.astype(int)
の事であるなら数値化できない文字列の存在有りかなってレベルです。
あとは数値リストにしたのにやっているって訳ではないですよね?
No.3
- 回答日時:
> あと、astypeが使えないのは何故でしょうか?
> strにこのatributionは含まれないというエラーが出ます。
a_list.iloc[10,9]で取り出したのが "34610,35276,35720,"という文字列(str)だからです。
astype() は、pandas.DataFrame型のクラスで使用可能なメソッドであり、str型では使用できません。
pandas.DataFrame.astype
https://pandas.pydata.org/pandas-docs/stable/ref …
XXXXX.txt内の
前略(tab)34610,35276,35720,(tab)後略 から
[34610, 35276, 35720]という結果を得たいのであれば、
No.1さんの方法で取得するしかないと思います。
No.1
- 回答日時:
まずリストの最後に '' が存在(数値に変換できないもの)するので一括変換(使った経験はないですけど)ができない点に注意しましょう。
取り合えずそれを除外し数字から数値のリストにするなら、
exonStarts = ['34610', '35276', '35720', '']
exonStarts = [int(x) for x in exonStarts if x.isnumeric()]
print(exonStarts) #[34610, 35276, 35720]
でも出来ます。
ただし文字列として存在する中で変換できるのは『正負の符号がなく小数点のない正の整数』ですね。
もし負の数値や小数点のある数値をって場合は、別途関数の作成が必要になるでしょう。
https://www.python.ambitious-engineer.com/archiv …
いつもありがとうございます。
整数のみのデータセットになります。最後に残ってた"はそういう意味だったんですね。
数値に変換出来ないものとは、例えば何が考えられるのでしょうか?
除去する方法も分からないのですが。。。
あと、astypeが使えないのは何故でしょうか?
strにこのatributionは含まれないというエラーが出ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- その他(プログラミング・Web制作) python pandas リストをデータフレームに変換 1 2022/09/27 17:04
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
ExcelVBA実行後に時々落ちる
-
ふりがなをアルファベット化す...
-
COBOLによる全角・半角混...
-
std::stringからLPCWSTR型への変換
-
sedで日本語の置換方法について
-
C++でEUC-JPをSJISに変換したい。
-
特殊記号
-
Excelマクロにて30分単位の計算...
-
「彡」って文字はなんという文...
-
PL/SQLでSJISの文字コードを取...
-
VS 2008(VB.NET)
-
%fと%gについて
-
コード変換について
-
フォームのコントロールのバッ...
-
1をA、2をB・・・に変換したい
-
Excel vba で1と10を正確に判断...
-
サーバから取得したdatetime型...
-
Symfowareでのデータ型変換につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
「彡」って文字はなんという文...
-
ふりがなをアルファベット化す...
-
ExcelVBA実行後に時々落ちる
-
VS 2008(VB.NET)
-
COBOLによる全角・半角混...
-
数値のパック10進数の変換に...
-
Symfowareでのデータ型変換につ...
-
sedで日本語の置換方法について
-
2バイト文字をJEFからSJISに変...
-
フォームのコントロールのバッ...
-
JIS → S-JIS コード変換するには
-
英数字を含む文字列(0-9,A-Z)...
-
Excel vba で1と10を正確に判断...
-
Excelマクロにて30分単位の計算...
-
PL/SQLでSJISの文字コードを取...
-
S-JIS → JIS コード変換するには
-
%fと%gについて
おすすめ情報