2017-08-24 12 views
2

この質問の一部は単純かもしれないが、私はこれを初心者にしており、最も簡単な解決策に感謝しています。 (.xlsxファイル)列の1つにセルがある場合は、それぞれ番号のリスト(空白で区切られた番号と各リストの末尾に空白があります)が表示されます。したがって、列は次のようになります。Excelのファイルの列からリストを読み込んで、それをPythonのリストに格納する

ColumnHeader 
[[[9 9 9 9 9 13 ][11 11 11 11 11 11 ][11 11 11 11 11 11 ][9 9 9 9 9 9 ] 
[[[9 9 9 9 9 9 ][9 9 9 9 9 9 ]]] 
[[[9 9 9 9 ][14 14 14 14 ][13 13 13 13 ]]] 

各リストのリスト数の違いに注意してください。また、リストの各リストには、その前と後に余分な[と]がそれぞれ付いています。

私がしたいのは理想的にはxlsxファイル全体をPythonで読むことです(数字だけのファイルに他の列があることを覚えておいてください)、パンダのデータフレームに格納しますが、リストのリストとして。私はちょうどまっすぐ前方のxlsxファイルを読み込む場合

ColumnHeader 
[[9,9,9,9,9,13],[11,11,11,11,11,11],[11,11,11,11,11,11],[9,9,9,9,9,9]] 
[[9,9,9,9,9,9],[9,9,9,9,9,9]] 
[[9,9,9,9],[14,14,14,14],[13,13,13,13]] 

:私は後でこの列を印刷する場合はリストのリストのリストになるリストに変換するのであれば、私は以下のようなもの(とそのシリーズになるだろうパンダのデータフレームに、それは明らかに私が望むものではないテキストとして、このコラムを読みます。

をこの上の任意のヘルプは高く評価されるだろう。

アリー

+0

あなたは現在どのようにパンダがファイルを読み込んでいるかを示すことができます。スニペットをここに貼り付けます。それは答えるのを助けることができる –

答えて

1

私はあなたがincriminated列をロードすることを示唆しています文字列として変換してから変換しますthis functionalityを使用するネストされたリスト文字列を受け取り、リストを返す関数定義:

import pandas as pd 
import ast 
# Load some test data  
df = pd.DataFrame({'fake_list' : ['[[[9 9 9 9 9 13 ][11 11 11 11 11 11 ][11 11 11 11 11 11 ][9 9 9 9 9 9 ]]]', 
           '[[[9 9 9 9 9 9 ][9 9 9 9 9 9 ]]] ', 
           '[[[9 9 9 9 ][14 14 14 14 ][13 13 13 13 ]]]'], 
        'a': [1,2,3], 
        'b': [4,5,6]}) 

def fix_list(s): 
    s1 = s.strip() #strip white space at the edge of the string 
    s1 = s1[1:-1] # remove edge parenthesis 
    s1 = s1.replace(' ',',').replace('][', '],[') # make some replacements so that it looks like a nested list 
    return ast.literal_eval(s1) # transform string to a nested list 

をそしてあなたが変換する必要がある列に関数を適用する:からの読み取り中または

df['true_list'] = df['fake_list'].apply(fix_list) 
print df.true_list[0] 
# [[9, 9, 9, 9, 9, 13], [11, 11, 11, 11, 11, 11], [11, 11, 11, 11, 11, 11], [9, 9, 9, 9, 9, 9]] 

、あなたはincriminated列を変換することができますconvertersを利用して:

df = pd.read_excel('file.xlsx', converters = {'fake_list':fix_list()} 
+0

それはポイントに非常に便利であり、正確に私の質問に答える。どうもありがとう :) – Aly

関連する問題