![](/img/trans.png)
[英]Python Pandas: Counting keys and summing up their values in a data frame
[英]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.