2017-08-01 5 views
3

タイトルのための私の表現が最高ではないことを認識していますが、これがアップです。「単語列」と「数字列」の両方のリストを「数字列」が数字に変換されたリストに変換する

は、どのように私は、整数に変換できる文字列は整数に変換されているリストを作るのですかどのように基本的に

converted_list = ["asdf" , 4, "asdfasdf", 8 , 9 , "asdf"] 

のようなリストに

example_list = ["asdf" , "4", "asdfasdf" , "8" , "9" ,"asdf"] 

のようなリストを変換するだろうが変換できない文字列は文字列として残りますか?

補足として、converted_listの各項目が整数であるかどうかを後でforループでテストするにはどうすればよいですか?

この問題の背景は、すべての整数が現在の文字列であるため、可能であれば、pandasのヘッダーを整数に変換しようとしていることです。そして、列にヘッダーとしてストリングされた数字があれば、私はその列の平均をとるでしょう。今、私はすべてのヘッダーをリストにしました。

答えて

6

リストの各項目が数字かどうかを判断するために、リスト内包表記を三項と組み合わせて使用​​できます。

>>> [int(n) if n.isdigit() else n for n in example_list] 
['asdf', 4, 'asdfasdf', 8, 9, 'asdf'] 
+1

を見て、私は辞書を形成する不器用な方法を使用していました。しかし、あなたは 'rename'呼び出しで使用するために、この辞書の理解の中であなたの洞察を使うことができます。 'df.rename(列= {k:df.columnsのkのint(k)の場合はk.isdigit()})'です。 理由がありますか? data_frame_names = list(df.columns.values) #print(data_frame_names) digitize = [int(n)if n]これを使用すると、おそらくこれを使用するようになります( - : – piRSquared

+0

) .isdigit()他N data_frame_namesにおけるnについて] #print(デジタル化) xのデジタイズ中: でisinstance IF(X、INT): プリント(。)([df.columns [X]]は平均DF) else: pass このエラーが発生し続けますTypeError:intではなくstrでなければなりません – Matthew

+0

最初に列の名前を変更しましたか?@piRSquared aboveのコメントを参照してください(例: 'df = df.rename ...) '。 – Alexander

2

セットアップ

example_list = ["asdf" , "4", "asdfasdf" , "8" , "9" ,"asdf"] 

df = pd.DataFrame(np.arange(24).reshape(4, 6), columns=example_list) 

df 

    asdf 4 asdfasdf 8 9 asdf 
0  0 1   2 3 4  5 
1  6 7   8 9 10 11 
2 12 13  14 15 16 17 
3 18 19  20 21 22 23 

df.rename(columns={k: int(k) for k in df.columns[df.columns.str.isdigit()]}) 

    asdf 4 asdfasdf 8 9 asdf 
0  0 1   2 3 4  5 
1  6 7   8 9 10 11 
2 12 13  14 15 16 17 
3 18 19  20 21 22 23 


ヘッダを変換します@ Alexanderの文字列メソッドisdigitをリスト内で使用することは非常に便利です。私たちは彼と一緒にこの答えを改善することができます。

df.rename(columns={k: int(k) for k in df.columns if k.isdigit()}) 

タイプ

df.rename(
    columns={k: int(k) for k in df.columns[df.columns.str.isdigit()]} 
).columns.map(type) 

Index([<class 'str'>, <class 'int'>, <class 'str'>, <class 'int'>, 
     <class 'int'>, <class 'str'>], 
     dtype='object') 
+0

OPは - 「私はパンダのヘッダーを変換しようとしています」 - mybeリストは列名です:) – jezrael

+1

Thx @jezrael 。私は少し私の答えを更新しました。 – piRSquared

関連する問題