在对 Dataframe 进行矢量化/循环时,难以将数据与其他 Dataframe 隔离。df
:
| 姓名|当前平衡|可用_平衡|类型|
| - ------|- ------|- ------|- ------|
| abc|一千|二千|A型|
| 定义|一千|二千|B型|settings
:
| 情景|A型|B型|
| - ------|- ------|- ------|
| 默认值|1个|第二章|df
-所需输出
| 姓名|当前平衡|可用_平衡|类型|2023年2月28日|2023年3月31日|
| - ------|- ------|- ------|- ------|- ------|- ------|
| abc|一千|二千|A型|二千|无|
| 定义|一千|二千|B型|一千|一千|settings
df告诉脚本如何将可用余额分配到以下期间。这是它的简化版本,我希望使用特定的月末日期和更长的期间,并进行各种设置。
def build_table(df: pd.DataFrame, periods: int = 2, scenario: str = 'Default'):
from datetime import date
def create_entry(df: pd.DataFrame, i: int = 1, start_period: int = 1):
number_periods = settings.loc[settings.Scenario == 'Default', df.Type]
return (df.Avail_Bal / number_periods) if i <= number_periods else 0
for i in range(periods):
df[ (date.toady() + pd.offsets.MonthEnd() + pd.DateOffset(months=i)).date() ] = \
create_entry(df, i, scenario)
return df
到目前为止,在尝试获取与 Dataframe 的1行相关的条件值时遇到以下行错误:number_periods = settings.loc[settings.Scenario == 'Default', df.Type]
ValueError:具有多个元素的数组的真值不明确。请使用. any()或. all()
在这个项目中有很多工作要做,但是现在我试着理解在哪里可以使用矢量化,以及什么时候必须迭代行。
1条答案
按热度按时间mzsu5hc01#
我认为您希望使用
.apply()
将create_entry
函数应用于 Dataframe ,此外,.loc
方法的结果是一个系列,因此您需要选择实际值(我使用.max()
执行此操作输出: