我是熊猫的新手。我有一个数据框,其中包含第一列中的星期几和第二列中的值列表。我想总结每个星期的总价值。这样:
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...
使用summing the number of occurrences per day pandas我实现了我想要的目标: - 原始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}
我编写了一个解决方法,将列转换为dicts然后列表然后返回到dict并转换回df,但显然这不是这样做的方法。
请您告诉我在原始数据框中获得每周每一天总价值的正确方法吗?
答案 0 :(得分:2)
我同意@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