Python如何为一个列数据框中的多行赋值,而不添加额外的列

  • 本文关键字:赋值 添加 数据 一个 Python python pandas
  • 更新时间 :
  • 英文 :


我使用

创建了一个包含540行和一列的数据框架
my_schedule = pd.DataFrame(index=np.arange(540), columns=np.arange(1))
在整个代码中,我想将某些字符串分配给行块。我通过使用下面的代码和这些代码的变体来实现这一点。
work_options = {120: [120, 60, 30], 60: [60, 30], 30: [30], 29: [3]}
office_activity = f' office_{s}'
while tick < 540:

if my_schedule.iloc[(tick + 1):(tick + 121), 0].isnull().all():
next_space = random.choices(['office', 'coffee', 'restroom'], transitionmatrix.iloc[row, :])

if next_space == ['office']:
office_time = random.choice([30, 60, 120])

if office_time == 30:
my_schedule.iloc[tick:(tick + 60), 0] = office_activity
tick += 30

elif office_time == 60:
my_schedule.iloc[tick:(tick + 60), 0] = office_activity
tick += 60

elif office_time == 120:
my_schedule.iloc[tick:(tick + 120), 0] = office_activity
tick += 120

刻度是0到540之间的值,因此响应数据框中的行。问题是,即使我初始化了一个只有一列的数据框,并希望为这一列和多行分配值,结果是它扩展了数据框,使其具有多列,并复制了office_activity"如图所示,

我现在得到的结果

我想要的是它只被分配给现有的列'0',没有列被自动添加。

我还没有弄清楚是什么原因导致代码中的多列,但下面的代码可能适合您。

import numpy as np
import pandas as pd
import random
my_schedule = pd.DataFrame(index=np.arange(540), columns=np.arange(1))
nrow,ncol = my_schedule.shape
work_options = {120: [120, 60, 30], 60: [60, 30], 30: [30], 29: [3]}
tick = 0
while tick < nrow:
next_space = random.choices(['office', 'coffee', 'restroom'],weights=(1,4,10))[0]
if next_space == 'office':
office_time = random.choice([30, 60, 120])
my_schedule.iloc[tick:(tick + office_time), 0] = f'office_{office_time}'
tick += office_time
else:
my_schedule.iloc[tick, 0] = next_space
tick += 1
pd.value_counts(my_schedule[0])

最新更新