我有这个数据框,我需要加入才能找到学年。
df11=pd.read_csv('https://s3.amazonaws.com/todel1623/myso.csv')
df11.course_id.value_counts()
274 3
285 2
260 1
我可以使用自我加入并且没有任何问题地获得相应的年份。
df=df11.merge(df11[['course_id']], on='course_id')
df.course_id.value_counts()
274 9
285 4
260 1
但是这种情况下的预期计数是
274 6
285 4
260 2
这是因为即使id 274有3年,课程持续时间也只有24个月。即使持续时间为24个月只有260条记录,它也应该返回2条记录。 (一次为当年,另一次为current_year + 1),该组的其余列值相同。
我可以为数据帧写一个这样的循环吗?
for row in df:
if i in range((df.duration_inmonths / 12)):
df.row.year= df.row.year + i
df.append(df.row)
在下列情况下,第一条记录应为2017年而不是2018年。
myl=list()
for row in df11.values:
for i in range(int(row[15]/12)):
row[5]=row[5]+i
myl.append(row)
myl[:2]
[array([383, 1102, 'C-43049', 'M.B.A./M.M.S.', 'Un-Aided', 2018, 80000,
8000, 900, 312, 89212, 2018, 12, 260, 95, 24, 1102.0,
'M.B.A./M.M.S.'], dtype=object),
array([383, 1102, 'C-43049', 'M.B.A./M.M.S.', 'Un-Aided', 2018, 80000,
8000, 900, 312, 89212, 2018, 12, 260, 95, 24, 1102.0,
'M.B.A./M.M.S.'], dtype=object)]
答案 0 :(得分:0)
numpy数组似乎没有附加到包含更改值的列表中。当我把它转换成列表时它起作用了。
myl.append(row.tolist())