拆分列pandas dataframe不会改变

时间:2016-02-26 19:59:10

标签: pandas

我正在尝试使用带有以下代码的pandas在四个单独的列中拆分列,但是当我尝试更改最后一个列时,它会替换之前的列,发生了什么?

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

1 个答案:

答案 0 :(得分:0)

我认为您需要更改上一个列名git diff _\css\templates\jquery.tag-editor.css,因为您会覆盖它。

因此,您可以更改列名,例如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

或者您可以将str.split与参数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

一起使用
expand=True

如果你有大型DataFrame,你可以使用最快的方法:

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