合并具有相似名称的数据框列。和用“,”(逗号)分隔的连接值
combine dataframe column with similar name. and concate values with separated by ',' (comma)
input file contains the product and its price on a particular date
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
output file should, combine all the days of month in one column and concatenate values with separated with comma (,)
product Oct-2020 Nov-2020
A 66.2, 69.5 72.95, 76.55
B 368.7, 382.8 384.7, 386.8
我尝试更改日期格式的列名称,从“2020 年 1 月 1 日”更改为 'jan-2020'
与
keys = [dt.strptime(key, "%d-%b-%Y").strftime("%B-%Y") for key in data.keys()]
在 df 转置之后我们可以使用 groupby。
比如可以选择分组依据并将值求和为:-
df.groupby().sum()
有什么东西可以连接值(字符串操作)并用逗号分隔它们。
不胜感激。
诀窍是在列上使用 Grouper:
inp = pd.read_excel("Whosebug 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
)
使用提供的示例,这会为 out
生成以下前 5 行:
如果要转换为特定日期格式,请执行
out.columns = out.columns.strftime("%b-%Y")
这导致
input file contains the product and its price on a particular date
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
output file should, combine all the days of month in one column and concatenate values with separated with comma (,)
product Oct-2020 Nov-2020
A 66.2, 69.5 72.95, 76.55
B 368.7, 382.8 384.7, 386.8
我尝试更改日期格式的列名称,从“2020 年 1 月 1 日”更改为 'jan-2020' 与
keys = [dt.strptime(key, "%d-%b-%Y").strftime("%B-%Y") for key in data.keys()]
在 df 转置之后我们可以使用 groupby。
比如可以选择分组依据并将值求和为:-
df.groupby().sum()
有什么东西可以连接值(字符串操作)并用逗号分隔它们。
不胜感激。
诀窍是在列上使用 Grouper:
inp = pd.read_excel("Whosebug 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
)
使用提供的示例,这会为 out
生成以下前 5 行:
如果要转换为特定日期格式,请执行
out.columns = out.columns.strftime("%b-%Y")
这导致