簡體   English   中英

對第一列pandas數據幀的所有唯一值求和第二列的值的正確方法

[英]correct way to sum values of second column for all unique values of first column pandas dataframe

我是熊貓新手。 我有一個數據框,在第一列中有星期幾,在第二列中有值列表。 我希望總結每個工作日的總價值。 所以:

        day               values 
0   Thursday                 3
1   Thursday                 0
2   Friday                   0
2   Friday                   1
4   Saturday                 3
5   Saturday                 1
etc...

會成為 :

    day               values 
0   Thursday                 3
1   Friday                   1
2   Saturday                 4
etc...

通過匯總每天熊貓的出現次數,我實現了我想要的目標:-原始df稱為value_frame

values_on_day =pd.DataFrame(value_frame.groupby(value_frame.day).apply(lambda subf: subf['values'].sum()))

但是,將值和工作日填充到一個單元格中,因此:print dict(values_on_day)等於:

    {0: day
Friday        3
Monday        4
Saturday      7
Sunday       22
Thursday     26
Tuesday       2
Wednesday     4
Name: 0, dtype: int64}

我已經編碼了一種變通方法,方法是將列轉換為字典,然后再轉換為列表,然后再轉換為字典,再轉換為df,但是顯然這不是這樣做的方法。

請您告訴我在原始數據框中獲得一周中每一天總價值的正確方法嗎?

我同意@Primer。 這是編寫所需代碼的正確方法。 我已經更新了答案,添加了一個index (工作日編號)。

import pandas as pd
import time

df = pd.DataFrame({'day': ['Thursday', 'Thursday', 'Friday', 'Friday', 'Saturday', 'Saturday'], 'values': [3,0,0,1,3,1]})
result = df.groupby('day').sum()
# Reseting the index
result.reset_index(inplace=True)
# Creating a new index as the weekday number for each day
result.index = result['day'].apply(lambda x: time.strptime(x, '%A').tm_wday)
# Renaming the index
result.index.names = ['weekday']
# Sorting by index
result.sort_index(inplace=True)
print(result)

得到:

              day  values
weekday                  
3        Thursday       3
4          Friday       1
5        Saturday       4

暫無
暫無

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

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