我有一张我想整理的数据。在原始数据中,三行为同一产品,但只有第一行具有名称。这三行代表着三个不同的销售年份,而这一年是即时的year+1,所以如果说"2021.0",那就是2020年。
Name Year SALE
0 Apple 2021.0 100
1 2022.0 80
2 2023.0 140
3 Pear 2021.0 50
4 2022.0 40
5 2023.0 30我想要实现的是将所有三行信息放在同一行中,如下所示
Name 2020 Annual Sale 2021 Annual Sale 2022 Annual Sale
0 Apple 100 80 140
1 Pear 50 40 30你们能帮个忙吗?对我来说,最困难的部分是从下一个指数中取值。
data = {
'Name': ['Apple', 'Apple', 'Apple', 'Pear', 'Pear', 'Pear'],
'Year': [2021, 2022, 2023, 2021, 2022, 2023],
'SALE': [100, 80, 140, 50, 40, 30],
}发布于 2022-08-28 14:49:26
枢轴是你最好的朋友
data = {
'Name': ['Apple', 'Apple', 'Apple', 'Pear', 'Pear', 'Pear'],
'Year': [2021, 2022, 2023, 2021, 2022, 2023],
'SALE': [100, 80, 140, 50, 40, 30],
}
df = pd.DataFrame(data)
df = df.pivot(index='Name', columns='Year', values='SALE')
df.columns = [f'{col} Annual Sale' for col in df.columns]
df.index = [name.replace(' ', '') for name in df.index]产出:
2021 Annual Sale 2022 Annual Sale 2023 Annual Sale
Apple 100 80 140
Pear 50 40 30假设您的数据如下所示:
'Name': ['Apple', 'Nan', 'Nan', 'Pear', 'Nan', 'Nan'],
'Year': [2021, 2022, 2023, 2021, 2022, 2023],
'SALE': [100, 80, 140, 50, 40, 30],
}我们可以将.replace方法与method="ffill“一起使用,它用上一行的值替换空值。
简单df = df.replace('Nan', method='ffill')
产出:
Name Year SALE
0 Apple 2021 100
1 Apple 2022 80
2 Apple 2023 140
3 Pear 2021 50
4 Pear 2022 40
5 Pear 2023 30https://stackoverflow.com/questions/73519596
复制相似问题