如何在熊猫中将一列拆分为两列

Posted

技术标签:

【中文标题】如何在熊猫中将一列拆分为两列【英文标题】:How split a column in two columns in pandas 【发布时间】:2013-11-03 23:36:46 【问题描述】:

我有下一个数据帧

data=read_csv('enero.csv')
data

           Fecha           DirViento  MagViento  
0   2011/07/01  00:00        318        6.6      
1   2011/07/01  00:15        342        5.5        
2   2011/07/01  00:30        329        6.6        
3   2011/07/01  00:45        279        7.5        
4   2011/07/01  01:00        318        6.0        
5   2011/07/01  01:15        329        7.1        
6   2011/07/01  01:30        300        4.7        
7   2011/07/01  01:45        291        3.1        

如何将Fecha列拆分为两列,例如获取一个dataframe如下:

      Fecha     Hora     DirViento  MagViento  
0   2011/07/01  00:00        318        6.6      
1   2011/07/01  00:15        342        5.5        
2   2011/07/01  00:30        329        6.6        
3   2011/07/01  00:45        279        7.5        
4   2011/07/01  01:00        318        6.0        
5   2011/07/01  01:15        329        7.1        
6   2011/07/01  01:30        300        4.7        
7   2011/07/01  01:45        291        3.1 

我正在使用 pandas 来读取数据

我尝试从每月数据库中计算每日平均值,该数据库每 15 分钟记录一次每日数据。为此,请使用 pandas 并对列进行分组:日期和时间以获取数据框,如下所示:

 Fecha Hora
 2011/07/01 00:00 -4.4
            00:15 -1.7
            00:30 -3.4
 2011/07/02 00:00 -4.5
            00:15 -4.2
            00:30 -7.6
 2011/07/03 00:00 -6.3
            00:15 -13.7
            00:30 -0.3

这样看,我得到以下内容

grouped.mean()                                                                         

Fecha     DirRes
2011/07/01 -3 
2011/07/02 -5
2011/07/03 -6  

【问题讨论】:

那没有回答我的问题。 将 Fecha 作为一个实际的日期时间对象不是更好吗,例如将 parse_dates=['Fecha'] 传递给 read_csv。 我同意@AndyHayden,您可以将parse_dates 参数传递给read_csv,这将读取字符串并尝试将其解析为日期时间,如下所示:data=read_csv('enero.csv', parse_dates=['Fecha']) 【参考方案1】:

这里是link 与之前已回答的非常相似的问题,希望对您有所帮助。在您的情况下,您可以按空格拆分 Fecha 中的内容并构造字符串第二部分的列表。然后将内容添加到插入的新列中

import pandas as p
t = p.read_csv('test2.csv')

#store into a data frame
df = p.DataFrame(t)


#update the fecha col value and create new col hora
lista = [item.split(' ')[2] for item in df['Fecha']]
listb = p.Series([item.split(' ')[0] for item in df['Fecha']])
df['Fecha'].update(listb)
df['Hora'] = lista

#change Hora position
#I am not sure whether this is efficient or not
#as I am also quite new to Pandas
col = df.columns.tolist()
col = col[-1:]+col[:-1]
col[0], col[1] = col[1], col[0]

df = df[col]

print df

希望这可以解决您的问题,这是输出。

        Fecha   Hora  DirViento  MagViento
0  2011/07/01  00:00        318        6.6
1  2011/07/01  00:15        342        5.5
2  2011/07/01  00:30        329        6.6
3  2011/07/01  00:45        279        7.5
4  2011/07/01  01:00        318        6.0
5  2011/07/01  01:15        329        7.1
6  2011/07/01  01:30        300        4.7
7  2011/07/01  01:45        291        3.1

【讨论】:

以上是关于如何在熊猫中将一列拆分为两列的主要内容,如果未能解决你的问题,请参考以下文章

如何将三列合并为两列,一列是分类的,另一列是数字的? (蟒蛇熊猫)

Excel如何把同一列的内容拆分为两列

如何将包含日期时间的 DataFrame 列拆分为两列:一列包含日期,另一列包含一天中的时间?

Excel如何把同一列的内容拆分为两列?

如何将EXCEL表格里一个单元格的数据拆分为两列

使用 r 将一列拆分为两列 [重复]