0

输入文件包含特定日期的产品及其价格

product  05-Oct-2020  07-Oct-2020 09-Nov-2020 13-Nov-2020
A        66.2         69.5        72.95       76.55
B        368.7        382.8       384.7       386.8

输出文件应将月份的所有日期组合在一列中,并将值与逗号 (,) 分隔

product   Oct-2020         Nov-2020
A         66.2, 69.5       72.95, 76.55
B         368.7, 382.8     384.7, 386.8

我试图用日期格式更改列名,从 '1-jan-2020' 到 'jan-2020'

keys = [dt.strptime(key, "%d-%b-%Y").strftime("%B-%Y") for key in data.keys()]

在 df transpose 之后,我们可以使用 groupby。

就像可以选择分组并将值求和为:-

df.groupby().sum()

有什么东西可以连接值(字符串操作)并用逗号分隔它们。

单击此处获取示例数据

任何方向表示赞赏。

4

1 回答 1

0

诀窍是在列上使用Grouper

inp = pd.read_excel("Stackoverflow sample.xlsx")

df = inp.set_index("Product")
df.columns = pd.to_datetime(df.columns)

out = (
    df
    .T
    .groupby(pd.Grouper(level=0, freq="MS"))
    .agg(lambda xs: ", ".join(map(str, filter(pd.notnull, xs))))
    .T
)

使用提供的示例,这会产生以下 5 个第一行out在此处输入图像描述

如果要转换为特定的日期格式,请执行

out.columns = out.columns.strftime("%b-%Y")

这导致 在此处输入图像描述

于 2021-06-11T18:15:36.983 回答