我想在資料值為零時獲取開始日期時間和結束日期時間。資料在 Postgresql 中。如果我使用 numpy 或 Pandas 獲得 Postgresql 解決方案,則對完整或 Python 有很大幫助。例如
第 1 列將包含日期時間第 2 列將包含值。
DateTime Value
06-07-2021 12:00 -521362.8779
06-07-2021 12:15 -57275.52732
06-07-2021 12:30 0
06-07-2021 12:45 0
06-07-2021 13:00 0
06-07-2021 13:15 0
06-07-2021 13:30 0
06-07-2021 13:45 0
06-07-2021 14:00 -57275.52732
06-07-2021 14:15 -377411.4886
06-07-2021 14:30 -377411.4886
06-07-2021 14:45 0
06-07-2021 15:00 0
06-07-2021 15:15 0
06-07-2021 15:30 -889863.5254
06-07-2021 15:45 -1194683.49
06-07-2021 16:00 0
06-07-2021 16:15 0
06-07-2021 16:30 0
06-07-2021 16:45 0
06-07-2021 17:00 -89539.05766
06-07-2021 17:15 -1117269.624
06-07-2021 17:30 -857357.2725
所需的輸出應為第 1 列序列號、第 2 列開始日期時間、第 3 列結束日期時間
Serial No Start DateTime End DateTime
1 06-07-2021 12:30 06-07-2021 13:45
2 06-07-2021 14:45 06-07-2021 15:15
3 06-07-2021 16:00 06-07-2021 16:45
uj5u.com熱心網友回復:
假設您的 DateTime 列的型別已經是,datetime或者您將上述字串轉換為dataframeusing
df = pd.read_csv(io.StringIO(df_string), sep='\s{2,}',engine='python',parse_dates=['DateTime'])
然后你做
x = df['Value'].to_numpy()
mask = np.empty(x.shape[0], 'bool')
mask[0] = x[0] == 0
mask[1:] = (x[1:] == 0) & (x[:-1] != 0)
mask2 = np.empty(x.shape[0], 'bool')
mask2[-1] = x[0] == 0
mask2[:-1] = (x[1:] != 0) & (x[:-1] == 0)
df2 = pd.DataFrame({'Start': df['DateTime'][mask].reset_index(drop=True),
'End' :df['DateTime'][mask2].reset_index(drop=True)})
你得到
Start End
0 2021-06-07 12:30:00 2021-06-07 13:45:00
1 2021-06-07 14:45:00 2021-06-07 15:15:00
2 2021-06-07 16:00:00 2021-06-07 16:45:00
uj5u.com熱心網友回復:
我只是將當前行與下一行/上一行值進行比較。如果一個為零而另一個不是,則它是一個開始或結束。
您可以使用 shift 方法來移動行。
df1 = pd.DataFrame()
df1['Start DateTime'] = (
df[(df['Value'] == 0) & (df['Value'].shift() != 0)]
['DateTime'].reset_index(drop=True) )
df1['End DateTime'] = (
df[(df['Value'] == 0) & (df['Value'].shift(-1) != 0)]
['DateTime'].reset_index(drop=True))
| 開始日期時間 | 結束日期時間 | |
|---|---|---|
| 0 | 06-07-2021 12:30 | 06-07-2021 13:45 |
| 1 | 06-07-2021 14:45 | 06-07-2021 15:15 |
| 2 | 06-07-2021 16:00 | 06-07-2021 16:45 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/319100.html
標籤:蟒蛇-3.x 熊猫 PostgreSQL 麻木的
上一篇:無法使用私有IP地址連接到GCPCloudSQL(CORS錯誤預檢缺少允許源標頭)
下一篇:如何匹配復合型別陣列中的元素?
