我有一个名为day\u counts的系列,通常包含7个值,但可以这样看。0对应星期一到6,星期天。你知道吗
Name: dow, dtype: int64
0 332
1 722
2 721
但是索引需要有7个值长(一周中的几天),所以我重新索引了这个序列,但是使用了一个字符串列表作为索引。代码如下所示(scrobbles是从csv文件读取的数据帧):
_scrobbles = self.scrobbles.query('month == ' + str(self.month))
_scrobbles['text_timestamp'] = pd.to_datetime(_scrobbles['text_timestamp'])
_scrobbles['dow'] = _scrobbles['text_timestamp'].map(lambda x: x.weekday())
data = _scrobbles['dow'].value_counts().sort_index()
day_counts = pd.Series(data=data)
new_index = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
day_counts_new = day_counts.reindex(index=new_index, fill_value=0)
这将创建新索引,但任何现有数据都会被0覆盖,并输出以下内容:
Mon 0
Tue 0
Wed 0
Thu 0
Fri 0
Sat 0
Sun 0
Name: dow, dtype: int64
应该是这样的
Mon 332
Tue 722
Wed 721
Thu 0
Fri 0
Sat 0
Sun 0
有人知道我如何保存现有数据吗?你知道吗
有趣的是,如果我将索引设置为像这样的数字new_index = [0, 1, 2, 3, 4, 5, 6]
然后它就按预期工作了
谢谢
我假设你有:
day_counts
,例如pd.Series([ 332, 722, 721 ])
new_index = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
要创建结果,请从包含7个零的系列开始:
然后用
day_counts
更新它:结果是您有一个包含7个项目的系列,初始项目 从
day_counts
和剩余项=0。你知道吗然后用
new_index
替换dc
中的索引:结果是:
编辑
请在下面找到整个问题的一个稍微改变的解决方案, 基于
groupby
,即使没有任何辅助表和更新:对于上述数据,结果是:
只需确保初始数据帧的长度与
new_index
相同。但正如你在帖子的开头所说,它通常包含7个值,所以不用担心。你知道吗我通过创建dictionary并将平日列表压缩到初始序列,然后从dictionary创建一个dataframe来解决这个问题。你知道吗
相关问题 更多 >
编程相关推荐