Python Polars 库:shift() 函数的问题

问题描述 投票:0回答:1

我有这个关于极地的脚本...

import polars as pl
from faker import Faker

fake = Faker(locale='fr_FR')

def my_func():
    operation = fake.unique.pystr_format(
        string_format='??###', 
        letters='abcdefghijklmnopqrstuvwxyz').upper()
    
    return operation

my_df = pl.DataFrame({
    "Date":[date(2023, 1, 2), date(2023, 1, 2), date(2023, 1, 2),
            date(2023, 3, 5), date(2023, 3, 17), date(2023, 3, 17), 
            date(2023, 3, 17), date(2023, 3, 17), date(2023, 5, 1),
            date(2023, 5, 17), date(2023, 5, 17), date(2023, 5, 17)],
    "Invoice":['001', '001', '001', '002', 
               '003', '003', '003', '003',
               '004', '005', '005', '005'],
    "Amount":[250, 250, 250, 300, 
              450, 450, 450, 450, 
              500, 650, 650, 650],
    'Operation':['', '', '', '', 
                 '', '', '', '', 
                 '', '', '', '',]
})

my_df.with_columns(
    pl.when(pl.col('Invoice') != pl.col('Invoice').shift())
    .then(pl.col('Operation').map_elements(lambda x : my_func()))
    .otherwise(pl.col('Operation').shift()))

它给出以下结果:

日期 发票 金额 操作
2023-01-02 00:00:00 001 250
2023-01-02 00:00:00 001 250
2023-01-02 00:00:00 001 250
2023-03-05 00:00:00 002 300 WV068
2023-03-17 00:00:00 003 450 KL429
2023-03-17 00:00:00 003 450
2023-03-17 00:00:00 003 450
2023-03-17 00:00:00 003 450
2023-05-01 00:00:00 004 500 VF254
2023-05-17 00:00:00 005 650 NT977
2023-05-17 00:00:00 005 650
2023-05-17 00:00:00 005 650

我的 shift() 函数有问题 -> 我无法得到这个结果:

日期 发票 金额 操作
2023-01-02 00:00:00 001 250
2023-01-02 00:00:00 001 250
2023-01-02 00:00:00 001 250
2023-03-05 00:00:00 002 300 WV068
2023-03-17 00:00:00 003 450 KL429
2023-03-17 00:00:00 003 450 KL429
2023-03-17 00:00:00 003 450 KL429
2023-03-17 00:00:00 003 450 KL429
2023-05-01 00:00:00 004 500 VF254
2023-05-17 00:00:00 005 650 NT977
2023-05-17 00:00:00 005 650 NT977
2023-05-17 00:00:00 005 650 NT977

你能帮我吗?

提前谢谢您

python-polars shift
1个回答
0
投票

我可能会帮助您解决 Python Polar 库中的 shift() 函数的问题。以下是其中一些:

  • Python Polar 库:shift() 函数的问题:这是另一个与您有相同问题的用户在 Stack Overflow 上发布的问题。他们提供代码和获得的输出,并寻求帮助以获得所需的输出。目前还没有答案,但你可以按照这个问题看看是否有人回应,或者尝试修改他们的代码以满足你的需求。
  • 极性相当于 pandas groupby shift():这是一个用户在 Stack Overflow 上发布的答案,解释了如何使用极性中的 over 表达式来完成与 pandas 中的 df.groupby().shift 相同的操作。他们提供了一些示例和代码片段来说明他们的解决方案。您可以尝试将他们的方法应用于您的问题,或者从 polars 文档了解有关过度表达的更多信息。
  • 如何更改 Python Polars 库中单列的位置:这是想要更改 Polars DataFrame 中单列位置的用户在 Stack Overflow 上发布的另一个问题。他们提供代码和得到的输出,并要求一种对列重新排序的方法。另一位用户发布了一个答案,提供了对列重新排序的功能,并展示了如何使用它。您可以尝试使用他们的功能,或者根据您的问题进行调整。
  • pandas.DataFrame.shift:这是 pandas 中的 shift() 方法的文档页面,该方法以可选的时间频率将索引移动所需的周期数。您可以将此方法与极坐标中的 shift() 方法进行比较,看看是否有任何可能影响您的问题的差异或相似之处。

我希望这些网络搜索结果对您有所帮助。如果您需要更多信息,可以访问我们的[网站]1了解更多有关Python编程的提示和技巧。祝你今天过得愉快! 😊

© www.soinside.com 2019 - 2024. All rights reserved.