我有一个polars Dataframe 如下:
import polars as pl
df = pl.DataFrame(
{
"class": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
"day": [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4],
"id": [1, 2, 3, 2, 3, 4, 1, 2, 5, 2, 1, 3, 4],
"value": [1, 2, 2, 3, 5, 2, 1, 2, 7, 3, 5, 3, 4],
}
)
我想要的结果是:
- 按“类”分组(虽然本例中只有一个,但假设有很多)。
- 计算所有可能的日对的所有成对相关性,例如“日”-1和“日”-2、“日”-2和“日”-4等。
- 一个特定的“天”对之间的两个序列从“值”中取出并通过“id”匹配,并且仅考虑交点来计算相关性,例如“天”-1和“天”-4之间的相关性是[1,2,2]和[5,3,3]之间的相关性。
我可能想这样组织结果:
class cor_day_1_2 cor_day_1_3 cor_day_1_4 cor_day_2_3 cor_day_2_4 cor_day_3_4
1 - - - - - -
.
.
.
我已经尝试使用df.pivot开始,但被几个原因卡住了:
- 需要进行转置(可能会扩展)
- 否则,计算行相关性(不要认为它是开箱即用的)
非常感谢您的潜在帮助。
1条答案
按热度按时间rjee0c151#
下面是一个尝试开始:使用
.join()
按类、id分组,然后过滤掉重复项。