我有一个像这样的熊猫数据框:
col1 col2 col3
1 8 6
2 9 5
5 3 9
现在,我想为数据框的每一行添加一个新列,并使用列表中的值。所以,如果我的清单是这样的:
lst = ["a", "b","c"]
然后我希望最终的数据帧是这样的:
col1 col2 col3 name
1 8 6 a
1 8 6 b
1 8 6 c
2 9 5 a
2 9 5 b
2 9 5 c
5 3 9 a
5 3 9 b
5 3 9 c
第一个想法是Index.repeat
按列表的长度使用,然后在新列后添加numpy.tile
:
lst = ["a", "b","c"]
df1 = (df.loc[df.index.repeat(len(lst))]
.assign(name=np.tile(lst, len(df)))
.reset_index(drop=True))
print (df1)
col1 col2 col3 name
0 1 8 6 a
1 1 8 6 b
2 1 8 6 c
3 2 9 5 a
4 2 9 5 b
5 2 9 5 c
6 5 3 9 a
7 5 3 9 b
8 5 3 9 c
或cross join
与DataFrame
from一起使用list
:
df1 = df.assign(a=1).merge(pd.DataFrame({'name':lst, 'a':1}), on='a').drop('a', axis=1)
print (df1)
col1 col2 col3 name
0 1 8 6 a
1 1 8 6 b
2 1 8 6 c
3 2 9 5 a
4 2 9 5 b
5 2 9 5 c
6 5 3 9 a
7 5 3 9 b
8 5 3 9 c
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句