簡體   English   中英

如何在具有Pandas的DataFrame中將列拆分為兩個單獨的列

[英]How to split a column into two separate ones in a DataFrame with Pandas

如何將a列拆分為兩個單獨的列。 適用的方法是這樣的嗎? 我想保留DataFrame中的其他列。

例如,我有一個名為“last_created”的列,其中包含一堆日期和時間:“2016-07-01 09:50:09”

我想用分割值創建兩個新列“date”和“time”。

這是我嘗試過但它返回錯誤。 由於某種原因,我的數據從str轉換為float,所以我強迫它為str。

def splitter(row):
    row = str(row)
    return row.split()

df['date'],df['time'] = df['last_created'].apply(splitter)

錯誤:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-47-e5a9cf968714> in <module>()
      7     return row.split()
      8 
----> 9 df['date'],df['time'] = df['last_created'].apply(splitter)
     10 df
     11 #splitter(df.iloc[1,1])

ValueError: too many values to unpack (expected 2)

在我的情況下,我只是使用該功能。 ipython源代碼如下。

In [5]: df = dict(data="", time="", last_created="")

In [6]: df
Out[6]: {'data': '', 'last_created': '', 'time': ''}

In [7]: df["last_created"] = "2016-07-01 09:50:09"

In [8]: df
Out[8]: {'data': '', 'last_created': '2016-07-01 09:50:09', 'time': ''}

In [9]: def splitter(row):
   ...:     row = str(row)
   ...:     return row.split()

In [10]: df["data"], df["time"] = splitter(df["last_created"])

In [11]: df
Out[11]:
{'data': '2016-07-01',
 'last_created': '2016-07-01 09:50:09',
 'time': '09:50:09'}

以下內容適合您。 但是,將日期和時間存儲為時間戳非常便於操作。

df['date'] = [d.split()[0] for d in df['last_created']]
df['time'] = [d.split()[1] for d in df['last_created']]

你可以先轉換to_datetime如果dtypeobject ,然后使用dt.datedt.time

df = pd.DataFrame({'last_created':['2016-07-01 09:50:09', '2016-07-01 09:50:09']})
print (df)
          last_created
0  2016-07-01 09:50:09
1  2016-07-01 09:50:09

print (df.dtypes)
last_created    object
dtype: object

df['last_created'] = pd.to_datetime(df.last_created)

print (df.dtypes)
last_created    datetime64[ns]
dtype: object

df['date'], df['time'] = df.last_created.dt.date, df.last_created.dt.time
print (df)
         last_created        date      time
0 2016-07-01 09:50:09  2016-07-01  09:50:09
1 2016-07-01 09:50:09  2016-07-01  09:50:09

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM