python - 如何将连续行填充到 Pandas 数据框?

标签 python pandas dataframe time-series

我有一个数据框,它看起来像:

    name  date         value
0    a    2020-01-01   1
1    a    2020-01-03   1
2    a    2020-01-05   1
3    b    2020-01-02   1
4    b    2020-01-03   1
5    b    2020-01-04   1
6    b    2020-01-05   1


其中值由 value_df = df.groupby(['name', 'date'], as_index=False).value.sum() 计算得出

我怎样才能做到以下几点:
    name  date         value
0    a    2020-01-01   1
1    a    2020-01-02   1
2    a    2020-01-03   1
3    a    2020-01-04   1
4    a    2020-01-05   1
5    b    2020-01-01   1
6    b    2020-01-02   1
7    b    2020-01-03   1
8    b    2020-01-04   1
9    b    2020-01-05   1

我试过
date_index = pd.date_range(start=min(df['date']), end=max(df['date']))
value_df['value'] = pd.Series(value_df['value'])
value_df.reindex(date_index)

这没有任何区别。

最佳答案

尝试旋转然后堆叠:

date_index = pd.date_range(start=df['date'].min(), end=df['date'].max())

(df.pivot_table('value','name','date',fill_value=1)
 .reindex(date_index,axis=1).reset_index().melt('name',var_name='date'))

或者:
(df.pivot_table('value','name','date',fill_value=1)
   .reindex(date_index,axis=1).stack().reset_index(name='value'))
  name        date  value
0    a  2020-01-01      1
1    a  2020-01-02      1
2    a  2020-01-03      1
3    a  2020-01-04      1
4    a  2020-01-05      1
5    b  2020-01-01      1
6    b  2020-01-02      1
7    b  2020-01-03      1
8    b  2020-01-04      1
9    b  2020-01-05      1

关于python - 如何将连续行填充到 Pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62346114/

相关文章:

Python Mechanize : how to select a dropdown list when two have the same name in web page?

python - pandas Dataframe 到 JSON 字典列表

python - 格式化字典中的python字典以导出到excel

r - 如何在 R 中从两个 data.frames 创建一个(不平衡)面板?

postgresql - 使用scala将多个数据帧插入函数中的postgres表

python - 为 Mac OS X 10.6.8 安装 Pygame

Python:如何修改 for 循环中交替键的字典值?

python - 如何使用正则表达式列出句子中以元音字母开头的单词

python - 按列名和多索引向多索引数据框添加值

python - 如何在 DataFrame 中创建和使用新函数?