我想删除组合列中的第一项。我该怎么做?
我有:
df2= pd.DataFrame({'x': [1,1,None],
'y': [1,3,5],
'z': [None,5,7]})
df2['combine'] = df2[['x', 'y', 'z']].values.tolist()
df2['combine'] = df2['combine'].apply(lambda el: [x for x in el if pd.notna(x)]).astype(int)
x y z combine
0 1 1 NaN [1.0, 1.0]
1 1 3 5.0 [1.0, 3.0, 5.0]
2 None 5 7 [None, 5.0, 7.0]
我想要:
x y z combine
0 1 1 NaN [1.0]
1 1 3 5.0 [1.0, 3.0, 5.0]
2 None 5 7 [None, 5.0, 7.0]
我试过:
df2['combine'][0] = df2['combine'][0][1:]
df2['combine'][0] = df2['combine'][0][1:].copy()
我确实得到了正确的数组,但我得到了这个警告。"试图在来自DataFrame"的切片的副本上设置一个值;我需要做些什么才能在不收到错误消息的情况下删除此值?
试用at
df2.at[0,'combine'] = df2.at[0,'combine'][1:]
df2.loc[:1, "combine"] = df2.loc[:1, "combine"].apply(lambda x: x[1:])
print(df2)
打印:
x y z combine
0 1.0 1 NaN [1.0]
1 1.0 3 5.0 [3.0, 5.0]
2 NaN 5 7.0 [None, 5.0, 7.0]
尝试
df2['combine'] = df2['combine'].str[1:]