簡體   English   中英

根據 Pandas 中的整數值將 DataFrame 行拆分為多行

[英]Split a DataFrame row into multiple rows based on integer value in Pandas

有沒有辦法根據整數上限值將一行拆分為多行? 我有一個如下所示的數據框

sys_df = pd.DataFrame([{'dateTime': '2020-11-12 17:45:00', 'timeTakenInSeconds': 650, 'id':'xyz'}])
指數 約會時間 timeTakenInSecs ID
0 2020-11-12 17:45:00 650 xyz

我試圖將上面的行分成 3 行,前 5 分鍾間隔如下。

指數 約會時間 timeTakenInSecs ID
0 2020-11-12 17:45:00 300 xyz
1 2020-11-12 17:40:00 300 xyz
2 2020-11-12 17:35:00 50 xyz

我們是否有任何 Pandas bulin utils 來實現這一目標?

您可以構建自己的方法。 潛在客戶可以是:

import pandas as pd
from datetime import datetime, timedelta
origin_data = {'dateTime': '2020-11-12 17:45:00', 'timeTakenInSeconds': 650, 'id':'xyz'}

def splitter(origin_data, interval=0):
    data=[]
    to_sec = interval*60
    current_time = datetime.fromisoformat(origin_data['dateTime'])
    for item in range((origin_data['timeTakenInSeconds']//to_sec)):
        data.append({'dateTime': str(current_time),
                     'timeTakenInSeconds': to_sec, 'id':'xyz'})
        current_time -= timedelta(seconds=to_sec)
    reminder = origin_data['timeTakenInSeconds'] - (origin_data['timeTakenInSeconds']//to_sec)*to_sec
    if reminder:
        data.append({'dateTime': str(current_time),
                     'timeTakenInSeconds': reminder, 'id': 'xyz'})
    return data


print(pd.DataFrame(splitter(origin_data, interval=5)))

輸出:

              dateTime  timeTakenInSeconds   id
0  2020-11-12 17:45:00                 300  xyz
1  2020-11-12 17:40:00                 300  xyz
2  2020-11-12 17:35:00                  50  xyz

筆記:

您還可以使用:

pd.date_range(end=datetime.fromisoformat(origin_data['dateTime']), periods=3, freq='5min')

根據需要拆分日期。

暫無
暫無

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

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