2016-06-23 7 views
1

パンダを使用して、データフレームには、または、見られている:私は、全体のデータフレームの列を反復処理して、新しい分割と現在のデータフレームのコピーを作成したいPython:データフレーム内の特定のセルにアクセスして変更し、データフレームの新しいバージョンに保存します。

import re 
re.split(';|,',x) 

これは私がここで他の回答に基づいて試していたものです。

for row in x: 
    if pd.notnull(x): 
     SplitIDs = re.split(';|,',x) 
     df.iloc[0, df.columns.get_loc('x')] = SplitIDs 

私は「ループのためには、」現在、(データフレームの新しいコピーのために)分割形式に変更するために見ている特定のセルにアクセスする方法がわかりません。

これらの変更をデータフレームの新しいコピーに保存する方法についても教えていただければ幸いです。

私の質問が明確でない場合はお詫び申し上げます。私は一般的にスクリプトを作成するのがとても新しいです - あなたの説明がより詳細であればあるほど良いでしょう。ありがとう!


また、文字列を分割するたびに新しい列を作成する場合はどうすればよいですか?たとえば、文字列が3つの部分に分割されたとします.3つの文字列を既存の同じ列の下に置くのではなく、2つの新しい部分を新しい隣接する列に配置します。

次の行(同じ列内にある)を2つに分割すると(既存の同じパラメータに基づいて)、既存の列のスペースに新しい私たちが作成した列(そして3番目の列は空白になります)。または、この行に作成した列よりも多くの行がある場合(そしてすべての要素が収まりきらない場合)、その列に合わせて新しい列を作成するにはどうすればよいですか?

答えて

0

まず、pandasデータフレームのインデックス作成の仕組みについて説明します。あなたは以下のdaframeを持っていると仮定すると:

df = DataFrame(randn(5,2),index=range(0,10,2),columns=list('AB')) 
In [12]: df 
Out[12]: 
    A   B 
0 0.767612 0.322622 
2 0.875476 2.819955 
4 1.876320 -1.591170 
6 0.645850 -0.492359 
8 0.148593 0.721617 

今、例えば、使用することができ、全体の行にアクセスするために:Pandas Slicing and Indexing

df.iloc[[2]] 
    A   B 
4 1.876320 -1.591170 

をあなたがここでより多くの例を見つけることができます。さて、新しい列がほしいと言ってみましょう。CここではA+Bです。私は基本的に次の操作を行うことができます:あなたは、セルによってあなたのデータセルにアクセスする必要はありません見ることができるように

df['C'] = df['A'] + df['B'] 

Out[23]: df 
    A   B   C 
0 0.767612 0.322622 1.090235 
2 0.875476 2.819955 3.695431 
4 1.876320 -1.591170 0.285151 
6 0.645850 -0.492359 0.153490 
8 0.148593 0.721617 0.870210 

は、あなたが同時に全体の列に関数を適用することができます。さて、それに正規表現を適用した結果に基づいて新しい列を作成するには、次の操作を行うことができ、文字列がであるあなたの列がmyStringsと呼ばれていると言う:

df['new_string'] = df['myStrings'].str.replace(r'(\b\S)', r'+\1') 

あなたがここにあなた自身の正規表現を適用することができます。 .str機能の詳細については、hereを参照してください。

data = {'raw': ['Arizona 1', 
       'Iowa 1', 
       'Oregon 0']} 
df = pd.DataFrame(data, columns = ['raw']) 
df 
Out[31]: 
    raw 
0 Arizona 1 
1 Iowa 1 
2 Oregon 0 

をそして、あなたは宇宙に基づいてこれを分割し、2つの2で新しい列(あるいは新しいデータフレーム)保存したい:

df['firstSplit'] = df['raw'].str.split(' ').str.get(0) 

この意志をしたいかについて具体的にこれだけではなく、選択の下で私の文字列を分割します ` (=真を拡大し、「」)

df 
Out[30]: 
    raw   firstSplit 
0 Arizona 1 Arizona 
1 Iowa 1  Iowa 
2 Oregon 0 Oregon 
+0

' column_name.str.split:私はあなたが探しているものであると信じて、次の結果分割した各列に独自の列があるように、分割後にさらに列を追加(拡張)することによってデータフレームを広げます。 [テキストデータを使って作業する](http://pandas.pydata.org/pandas-docs/stable/indexing.html) - "文字列の分割と置換" –

+0

@EricCoy Trueしかし、あなたは望むものを得ることができます私がこの例で行ったことのようにそれから。私は私の答えを編集し、最後の例を確認してください。 – ahajib

+0

'' 'get(0)' 'の代わりに' '' get(1) '' 'を使うと、2番目の要素などが得られます... – ahajib

関連する問題