簡體   English   中英

Python Pandas 基於日期時間值對列進行計數和求和

[英]Python Pandas Counting and Summing columns based on datetime values

我正在嘗試計算滿足某個條件的值並將其存儲在另一列中,(我想檢查有多少票與另一張票同時打開)提交日期和解決日期是這樣的列

df['Submit_Date']  = 
  1   10/1/16 23:41
  2   10/1/16 23:50
  3  10/2/16 0:05
  4   10/3/16 5:17

df['Resolved_Date'] = 
  1  10/2/16 2:27
  2  3/9/17 19:39
  3  11/15/16 12:46
  4  11/14/16 17:37

我想查看第 2 行,看看其他 3 次中的哪一次在與第 2 行相同的時間打開所以這個答案將是第 1 行、第 3 行和第 4 行,因為它們都有提交日期或解決日期2016 年 10 月 2 日至 2017 年 3 月 9 日之間
我想對每一行都這樣做,並掃描所有其他列

這是我到目前為止所擁有的

df['newcolumn'] = ((df['Submit_Date'] < df['Submit_Date']) |   (df['Resolved_Date'] > df['Resolved_Date'])).sum()

問題是我想檢查當前行中的提交日期是否大於所有其他行,並且該行中的解決日期是否小於所有其他行。 我想為每一行找到與此條件匹配的所有值,並將其保存在新列的同一行中

您必須遍歷 dataframe 因為您必須將每一行與其他每一行進行比較。 以下解決方案中的一項改進是按Submit_Date排序,這樣您必須與該記錄下方或該記錄上方進行比較,以進行 submit_date 比較。

result = list()
for row in df.iterrows():
    cur_data = row[1]
    result.append((((cur_data['Submit_Date'] < df['Submit_Date']) & (df['Submit_Date']< cur_data['Resolved_Date']))
                  | ((cur_data['Submit_Date'] < df['Resolved_Date']) & (df['Resolved_Date'] < cur_data['Resolved_Date']))).sum())
df['count'] = result


         Submit_Date       Resolved_Date    count
1   2016-10-01 23:41:00 2016-10-02 02:27:00 2
2   2016-10-01 23:50:00 2017-03-09 19:39:00 3
3   2016-10-02 00:05:00 2016-11-15 12:46:00 2
4   2016-10-03 05:17:00 2016-11-14 17:37:00 0

暫無
暫無

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

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