简体   繁体   中英

How to split and replace column in dataframe with new columns

I have a Dataframe as follows:

import pandas as pd
dic = {'title':['A', 'B', 'C'], 'Date':['1/1/2010 to 2/1/2010', '3/1/2010 to 
                 4/1/2010', '5/1/2010 to 6/1/2010'], 'Value':[1.0, 2.2, 3.3]}
df = pd.DataFrame(dic)

The DataFrame is as follows:

df
   title                  Date  Value 
0      A  1/1/2010 to 2/1/2010    1.0 
1      B  3/1/2010 to 4/1/2010    2.2 
2      C  5/1/2010 to 6/1/2010    3.3 

I want to split the entire Date column into something like Start_Date and End_Date as follows:

   title  Start_Date  End_Date  Value 
0      A    1/1/2010  2/1/2010    1.0 
1      B    3/1/2010  4/1/2010    2.2 
2      C    5/1/2010  6/1/2010    3.3 

Any idea of how to do it?

By using str split

df[['StartDate','EndDate']]=df.Date.str.split(' to ',expand=True)
df
Out[36]: 
                   Date  Value title StartDate   EndDate
0  1/1/2010 to 2/1/2010    1.0     A  1/1/2010  2/1/2010
1  3/1/2010 to 4/1/2010    2.2     B  3/1/2010  4/1/2010
2  5/1/2010 to 6/1/2010    3.3     C  5/1/2010  6/1/2010

I use list comprehensions for splitting columns..but now I see this answer will fail where we have different numbers of characters in the Date field. Splitting on 'to' like in the answers above is better.

df['Start Date'] = [d[0:9] for d in df.Date]
df['End Date'] = [d[11:] for d in df.Date]

    Date                    Value title Start Date  End Date
0   1/1/2010 to 2/1/2010    1.0     A   1/1/2010    2/1/2010
1   3/1/2010 to 4/1/2010    2.2     B   3/1/2010    4/1/2010
2   5/1/2010 to 6/1/2010    3.3     C   5/1/2010    6/1/2010
df[['start','end']] = pd.DataFrame(df.Date.str.split('to ').tolist())

您必须将日期列拆分to

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM