Pandas 拆分列数据帧不';不变

Pandas 拆分列数据帧不';不变,pandas,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

我尝试使用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)
查看图像以了解结果 提前谢谢


我认为您需要更改最后一列的名称
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  
但如果需要从最后一列中删除
\n
,请使用:

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

您的代码正在调用
df['Max Amp']=df.a.str.split('\t').str.get(3)
,您以前调用过
df['Max Amp']=df.a.str.split('\t').str.get(1)
那么您期待什么呢?EdChum,谢谢。。。。我没有看到,如果这是问题所在,那么我建议删除该帖子,因为这只是一个打字错误,如果你建议该帖子仍然保留在我的个人资料中?我喜欢下面答案中的建议,当您可以更改问题时-请进行一些改进。。。这取决于你。
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