将Pandas DataFrame拆分为多个列

时间:2017-05-24 01:55:00

标签: python pandas

我是Pandas的新手,我一直在努力实现以下目标,但正在努力。希望有人可以提供帮助。

我目前有以下Panda Dataframe

Out[10]: 
0.00632  18.00   2.310  0  0.5380  6.5750  65.20  4.0900   1  296.0  15.30     396.90   4.98  24.00
0     0.00632  18.00   2.310  0  0.5380  6.5750  65...
1     0.02731   0.00   7.070  0  0.4690  6.4210  78...                                              
2     0.02729   0.00   7.070  0  0.4690  7.1850  61...                                              
3     0.03237   0.00   2.180  0  0.4580  6.9980  45...                                                                                         
4     0.06905   0.00   2.180  0  0.4580  7.1470  54...                                              
5     0.02985   0.00   2.180  0  0.4580  6.4300  58...                                              

[505行x 1列]

数据以制表符分隔。我想将此DataFrame转换为以下DataFrame格式

      CRIM    ZN  INDUS  CHAS    NOX     RM    AGE     DIS  RAD    TAX  \
0     0.00632  18.0   2.31     0  0.538  6.575   65.2  4.0900    1  296.0   
1     0.02731   0.0   7.07     0  0.469  6.421   78.9  4.9671    2  242.0   
2     0.02729   0.0   7.07     0  0.469  7.185   61.1  4.9671    2  242.0   
3     0.03237   0.0   2.18     0  0.458  6.998   45.8  6.0622    3  222.0   
4     0.06905   0.0   2.18     0  0.458  7.147   54.2  6.0622    3  222.0 

[506行x 14列]

实现这一目标的最佳方法是什么?非常感谢

3 个答案:

答案 0 :(得分:2)

您似乎没有更改read_csv中的默认分隔符(var audio = new Audio('sound/y.mp3'); $('#' + ctrId).find('#divMessage').append( '<div class="msg_wrap">' + '<div class="avatar1"></div>' + '<div class="direct-chat-text"><span class="userName">:' + msg[i].userName + '</span> ' + '<span>' + msg[i].message + '</span>' + '</div>' + '</div>' + '<span style="margin-right: 30px;float:right;font-size: 11px;color: #8c8585;">' + msg[i].chatTime + '</span>' ).append(audio.play());)。

解决方案适用于标签分隔符:

,

和空格分隔符:

names = ['CRIM','ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX']
df = pd.read_csv('filename.csv', sep='\t', names = names)

names = ['CRIM','ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX'] df = pd.read_csv('filename.csv', sep='\s+', names = names) df = pd.read_csv('filename.csv', delim_whitespace=True, names = names) 参数定义新列名称,如果names没有标题。

答案 1 :(得分:1)

除非您正在从文件中读取数据(在这种情况下,pd.read_csv()将是更好的选择,如对原始帖子的评论中所述),您可以轻松地将字符串拆分为列:

data = data[0].str.split().apply(pd.Series)

现在,使用data.columns=("CRIM","ZN","INDUS",...)添加列名,您就完成了设置。

答案 2 :(得分:0)

怎么样

df.apply(lambda x: pd.Series(x.split('\t')))

或类似的东西?