
文字列データを数値データに変換する方法について教えてください。
下記のコードで、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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
プログラミングを学べる!?進化している子どものおもちゃについて専門家に聞いた!
プログラミングを学べるレゴブロックがあることはご存知だろうか。レゴに限らず最近のおもちゃには、プログラミングの要素がどんどん取り入れられているようだ。「教えて!goo」にも、「プログラミングを学べる子供...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
std::stringからLPCWSTR型への変換
-
「彡」って文字はなんという文...
-
sedで日本語の置換方法について
-
セル内の文字列が日本語か英語...
-
%fと%gについて
-
VBAで4桁の16進数から16桁の2進...
-
英数字を含む文字列(0-9,A-Z)...
-
VB.NETのコンソールアプリケー...
-
Symfowareでのデータ型変換につ...
-
入力した文字を全て自動で全角...
-
数値のパック10進数の変換に...
-
VS 2008(VB.NET)
-
2バイト文字をJEFからSJISに変...
-
「髙(はしごたか)」を文字コー...
-
COBOLによる全角・半角混...
-
VB6.0のコードエディタでの改行...
-
フォームのコントロールのバッ...
-
Cでバイナリデータを変換
-
byte配列の内容をstringにコピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
ふりがなをアルファベット化す...
-
VS 2008(VB.NET)
-
「彡」って文字はなんという文...
-
2バイト文字をJEFからSJISに変...
-
JIS → S-JIS コード変換するには
-
COBOLによる全角・半角混...
-
ExcelVBA実行後に時々落ちる
-
フォームのコントロールのバッ...
-
sedで日本語の置換方法について
-
Symfowareでのデータ型変換につ...
-
数値のパック10進数の変換に...
-
S-JIS → JIS コード変換するには
-
RubyでUTF8のコード値を文字に...
-
英数字を含む文字列(0-9,A-Z)...
-
%fと%gについて
-
CString ←→ BSTRの変換について
-
C#でバイナリデータをテキスト...
おすすめ情報