import pandas as pd
# Sample data
data = { 'name': ['ray', 'ray', 'ray', 'ray', 'ray', 'ray'],
'code': [1, 0, 1, 1, 0, 1] }
# Create a DataFrame
df = pd.DataFrame(data)
# Initialize the 'Period' column
df['Period'] = 0
# Calculate the 'Period' based on the logic
current_period = 0
for i in range(len(df)):
if df.loc[i, 'code'] == 1:
current_period += 1
else:
current_period = 0
df.loc[i, 'Period'] = current_period
# Display the DataFrame with the 'Period' column
print(df)
上面是我的代码,这里我想根据代码列的值创建期间列。期间列的逻辑为;
- 第一行是code=1所以period是1,
- 第二行是code=0所以period是0,
- 然后行3和4是代码=1所以周期是2为两行
- 第五行是code=0,所以period是0,
- 那么行6的code =1,所以周期是3,依此类推
基本上,我想将code=1的连续行分组,并为它们赋值。
Check this for required output and my current output from the code above
1条答案
按热度按时间5lhxktic1#
我将使用
shift
、cumsum
和where
的布尔运算:输出量:
中间体:
修复代码
您需要跟踪最后一个值。
但是,你不应该对pandas使用循环。