如何根据行数展开列表并放入新列
how to spead a list and put into a new column based on number of rows
假设我有一个品牌清单:
cat_list = ['a', 'b', 'ab']
我希望此列表重复填充名为 category
的新列,与我的行一样多。
我希望第一行有 'a'
,第二行有 'b'
,第三行有 'ab'
,循环重复直到最后一行,如下例所示:
type value category
a 25 a
a 25 b
a 25 ab
b 50 a
b 50 b
b 50 ab
目前我尝试过的是:
cat_list = ['a', 'b', 'ab']
df['category'] = cat_list * len(df)
但是我遇到了这种错误
Length of values does not match length of index
我应该如何修正我的脚本以获得预期的结果?
谢谢。
使用numpy.tile
重复,重复次数为整数除法:
df = pd.DataFrame({'a':range(8)})
cat_list = ['a', 'b', 'ab']
df['category'] = np.tile(cat_list, (len(df.index) // len(cat_list)) + 1)[:len(df.index)]
print (df)
a category
0 0 a
1 1 b
2 2 ab
3 3 a
4 4 b
5 5 ab
6 6 a
7 7 b
假设我有一个品牌清单:
cat_list = ['a', 'b', 'ab']
我希望此列表重复填充名为 category
的新列,与我的行一样多。
我希望第一行有 'a'
,第二行有 'b'
,第三行有 'ab'
,循环重复直到最后一行,如下例所示:
type value category
a 25 a
a 25 b
a 25 ab
b 50 a
b 50 b
b 50 ab
目前我尝试过的是:
cat_list = ['a', 'b', 'ab']
df['category'] = cat_list * len(df)
但是我遇到了这种错误
Length of values does not match length of index
我应该如何修正我的脚本以获得预期的结果?
谢谢。
使用numpy.tile
重复,重复次数为整数除法:
df = pd.DataFrame({'a':range(8)})
cat_list = ['a', 'b', 'ab']
df['category'] = np.tile(cat_list, (len(df.index) // len(cat_list)) + 1)[:len(df.index)]
print (df)
a category
0 0 a
1 1 b
2 2 ab
3 3 a
4 4 b
5 5 ab
6 6 a
7 7 b