2016-02-26 78 views
2

我試圖使用熊貓用下面的代碼四個分立列拆分列,但是當我試圖改變最後一個之前替換列,發生了什麼?分列大熊貓數據幀不改變

import pandas as pd 
data = ['-6189794\t5712859\t4314.87772005053\t213402.703056687\n'] 
df = pd.DataFrame(data) 
df.columns = ['a'] 
df 

df['Min Amp'] = df.a.str.split('\t').str.get(0) 
df['Max Amp'] = df.a.str.split('\t').str.get(1) 
df['Min RMS'] = df.a.str.split('\t').str.get(2) 
df['Max Amp'] = df.a.str.split('\t').str.get(3) 

查看結果的圖像 在此先感謝

enter image description here

enter image description here

+0

嗯,你的代碼調用'DF [ '最大安培'] = df.a.str.split( '\ t')。str.get(3)'和你以前叫'DF [ '最大安培' ] = df.a.str.split('\ t')。str.get(1)'所以你期待什麼? – EdChum

+0

EdChum,感謝....我沒有看到它 – hammu

+0

如果是這樣的問題,那麼我建議刪去職位,因爲它只是一個錯字 – EdChum

回答

0

我想你需要更改最後一列名Max Amp,因爲你覆蓋。

所以,你可以更改列名,例如Max Amp1

import pandas as pd 

data = ['-6189794\t5712859\t4314.87772005053\t213402.703056687\n'] 
df = pd.DataFrame(data) 
df.columns = ['a'] 
print df 

df['Min Amp'] = df.a.str.split('\t').str.get(0) 
df['Max Amp'] = df.a.str.split('\t').str.get(1) 
df['Min RMS'] = df.a.str.split('\t').str.get(2) 
df['Max Amp1'] = df.a.str.split('\t').str.get(3) 
print df 
                a Min Amp Max Amp \ 
0 -6189794\t5712859\t4314.87772005053\t213402.70... -6189794 5712859 

      Min RMS   Max Amp1 
0 4314.87772005053 213402.703056687\n 

但是如果你需要從最後一列使用str.strip脫衣\n

df['Min Amp'] = df.a.str.split('\t').str.get(0) 
df['Max Amp'] = df.a.str.split('\t').str.get(1) 
df['Min RMS'] = df.a.str.split('\t').str.get(2) 
df['Max Amp1'] = df.a.str.split('\t').str.get(3).str.strip() 
print df 
                a Min Amp Max Amp \ 
0 -6189794\t5712859\t4314.87772005053\t213402.70... -6189794 5712859 

      Min RMS   Max Amp1 
0 4314.87772005053 213402.703056687 

或者你可以使用str.split與參數expand=True

df[['Min Amp', 'Max Amp', 'Min RMS', 'Max Amp1']] = df.a.str.split('\t', expand=True) 
df['Max Amp1'] = df['Max Amp1'].str.strip() 
print df 
                a Min Amp Max Amp \ 
0 -6189794\t5712859\t4314.87772005053\t213402.70... -6189794 5712859 

      Min RMS   Max Amp1 
0 4314.87772005053 213402.703056687 

如果你的大數據幀,你可以用最快的方法:

df[['Min Amp', 'Max Amp', 'Min RMS', 'Max Amp1']] = pd.DataFrame([ x.split('\t') for x in df.a.tolist() ]) 
df['Max Amp1'] = df['Max Amp1'].str.strip() 
#if you need delete column a 
df = df.drop('a', axis=1) 
print df 
    Min Amp Max Amp   Min RMS   Max Amp1 
0 -6189794 5712859 4314.87772005053 213402.703056687