使用 Concat 将移位系列连接到 Dataframe
Shifted Series Join to Dataframe with Concat
有一个 DataFrame z
和
['title','module_number','beginners','finishers']
列。我需要移动 z.beginners
系列,因为每个最后一个 module_number
应该在那里有 NaN,并将它作为新列加入 DataFrame z.shift
.
我已经尝试用 pd.concat
做到这一点。我的代码:
def exp2(df):
fx = df.join(df.beginners[1:].rename('shifted').reset_index()).drop('index', axis =1)
return fx
def exp3(z,lst):
common = list()
for title in lst:
df = z[z['title'] == title]
example = exp2(df)
common.append(example)
return pd.concat(common)
exp3(z, z.title.unique())
仅对 z
中的第一个标题有效,对第二个标题无效。但是,它不适用于任何其他标题:
title module_number beginners finishers shift
0 Uu 1 518 458 434
1 Uu 2 434 406 NaN
3 Kk 1 627 563 27
4 Kk 2 521 427 NaN
5 Rr 1 158 142 NaN
6 Rr 2 136 106 NaN
有谁知道替代解决方案或如何增强我的代码?
我只是用没有循环的方式完成的:
shifted = z.beginners.where(z.module_number != 1)[1:]
z.join(shifted.rename('shifted').reset_index()).drop('index',axis = 1)
有一个 DataFrame z
和
['title','module_number','beginners','finishers']
列。我需要移动 z.beginners
系列,因为每个最后一个 module_number
应该在那里有 NaN,并将它作为新列加入 DataFrame z.shift
.
我已经尝试用 pd.concat
做到这一点。我的代码:
def exp2(df):
fx = df.join(df.beginners[1:].rename('shifted').reset_index()).drop('index', axis =1)
return fx
def exp3(z,lst):
common = list()
for title in lst:
df = z[z['title'] == title]
example = exp2(df)
common.append(example)
return pd.concat(common)
exp3(z, z.title.unique())
仅对 z
中的第一个标题有效,对第二个标题无效。但是,它不适用于任何其他标题:
title module_number beginners finishers shift
0 Uu 1 518 458 434
1 Uu 2 434 406 NaN
3 Kk 1 627 563 27
4 Kk 2 521 427 NaN
5 Rr 1 158 142 NaN
6 Rr 2 136 106 NaN
有谁知道替代解决方案或如何增强我的代码?
我只是用没有循环的方式完成的:
shifted = z.beginners.where(z.module_number != 1)[1:]
z.join(shifted.rename('shifted').reset_index()).drop('index',axis = 1)