伙计们,
由于某些原因,我必须将np.array放入DataFrame的单个列中。看起来是:
A B C
1 [1,2] 0
2 [4] 0
3 [1,2,5,6] 0
7 [2,5,6] 0
4 [8] 0
是否有任何方法可以根据B列的长度设置C列而不重复它们?例如。如果length(col.B)== 2或length(col.B)== 4,则C = 1,否则C = -1。然后我期望:
A B C
1 [1,2] 1
2 [4] -1
3 [1,2,5,6] 1
7 [2,5,6] 1
4 [8] -1
非常感谢。
答案 0 :(得分:4)
按numpy.where
和len
的条件使用isin
:
df['C'] = np.where(df['B'].str.len().isin({2,4}), 1, -1)
print (df)
A B C
0 1 [1, 2] 1
1 2 [4] -1
2 3 [1, 2, 5, 6] 1
3 7 [2, 5, 6] -1
4 4 [8] -1
答案 1 :(得分:0)
使用.apply
:
df['C']=df.apply(lambda row: 1 if len(row['B'].tolist()) in [2,4] else -1,axis=1)
print(df)
输出:
A B C
0 1 [1,2] 1
1 2 [4] -1
2 3 [1,2,5,6] 1
3 7 [2,5,6] -1
4 4 [8] -1
(如果dataframe元素是字符串,请执行ast.literal_eval