我有一个 pandas dataframe 列,它由可变大小的元素列表组成,我有另一个列表名称 country=[A1,A2,A3] 我的 Dataframe 是这样的:
A B
1 [A1,A2]
2 [A1,A2,A4,A5]
3 [A7,A8,A9]
我想要的是列中列表的长度不应大于 3。如果它大于 3。如果长度小于 3,则将其删除最后一个元素。然后附加那些不存在的 country_list 中的值在 pandas 列列表中。我的最终输出应该是这样的:
A B
1 [A1,A2,A3]
2 [A1,A2,A4]
3 [A7,A8,A9]
请您参考如下方法:
您可以使用 DataFrame.apply :
country = ['A1', 'A2', 'A3']
df = pd.DataFrame({'A':[1,2,3, 4],
'B':[['A1', 'A2'], ['A1','A2','A4','A5'], ['A7','A8','A9'], ['A5']]})
df
A B
0 1 [A1, A2]
1 2 [A1, A2, A4, A5]
2 3 [A7, A8, A9]
3 4 [A5]
def new_list(x):
if len(x)>=3:
return x[:3]
else:
for val in country:
if val not in x:
x.append(val)
if len(x)==3:
return x
df['B'] = df['B'].apply(new_list)
df
A B
0 1 [A1, A2, A3]
1 2 [A1, A2, A4]
2 3 [A7, A8, A9]
3 4 [A5, A1, A2]
