可以使用以下代码创建数据框:
import pandas as pd
s1 = pd.DataFrame({'item':['apple','apple','apple']},
index=['1/2/2024','1/5/2024','1/6/2024'])
s2 = pd.DataFrame({'item':['orange','orange','orange']},
index=['1/3/2024','1/5/2024','1/7/2024'])
s3 = pd.DataFrame({'item':['banana','banana','banana','banana']},
index=['1/4/2024','1/5/2024','1/6/2024','1/7/2024'])
print(s1)
print(s2)
print(s3)
打印输出如下所示:
item
1/2/2024 apple
1/5/2024 apple
1/6/2024 apple
item
1/3/2024 orange
1/5/2024 orange
1/7/2024 orange
item
1/4/2024 banana
1/5/2024 banana
1/6/2024 banana
1/7/2024 banana
我想根据日期索引组合每个数据帧中的项目值(以逗号分隔)。
我希望生成的数据框看起来像这样:
item
1/2/2024 apple
1/3/2024 orange
1/4/2024 banana
1/5/2024 apple,orange,banana
1/6/2024 apple,banana
1/7/2024 orange,banana
这似乎是一个简单的问题,但抱歉我是一个兼职Python的新手,我只是想不通。非常感谢您提供的任何帮助。
您可以连接所有三个数据帧,按索引分组,然后连接每组中的行:
df = pd.concat([s1, s2, s3]).groupby(level=0).agg(lambda x: ",".join(x))
item
1/2/2024 apple
1/3/2024 orange
1/4/2024 banana
1/5/2024 apple,orange,banana
1/6/2024 apple,banana
1/7/2024 orange,banana
concat
和 groupby.agg
分组:
out = pd.concat([s1, s2, s3]).groupby(level=0).agg(','.join)
输出:
item
1/2/2024 apple
1/3/2024 orange
1/4/2024 banana
1/5/2024 apple,orange,banana
1/6/2024 apple,banana
1/7/2024 orange,banana