[英]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.