Python Pandas用于根据条件从列表中生成二维列表的代码

Python Pandas用于根据条件从列表中生成二维列表的代码,python,pandas,list,dataframe,Python,Pandas,List,Dataframe,我想这样创建2D列表。如果数字为1,代码应将DF中的字段和列表中它前面的字段分组,如果数字为2,则应将字段和它前面的两个字段分组,依此类推 lst = ['Mickey', 'Mickey Mouse', 'Donald', 'Donald Duck', 'Hansel', 'And Gretel', 'Hansel And Gretel'..........] DF Character Numbers 4 Mickey Mouse 1.0 5 Do

我想这样创建2D列表。如果数字为1,代码应将DF中的字段和列表中它前面的字段分组,如果数字为2,则应将字段和它前面的两个字段分组,依此类推

lst = ['Mickey', 'Mickey Mouse', 'Donald', 'Donald Duck', 'Hansel', 'And Gretel', 'Hansel And Gretel'..........]

DF  Character           Numbers
4   Mickey Mouse        1.0
5   Donald Duck         1.0
6   Hansel And Gretel   2.0
....

需要根据DF中数字字段的值进行分组。如果Numbers=1,则列表中的对应字符及其前面的一个字段需要分组;如果Numbers=2,则列表中的对应字符及其前面的两个字段需要分组

将熊猫作为pd导入
lst=[‘米老鼠’、‘米老鼠’、‘唐老鸭’、‘唐老鸭’,
“Hansel”、“And Gretel”、“Hansel And Gretel”]
df=pd.DataFrame({'Character':{4:'米老鼠',5:'唐老鸭',
6:‘汉瑟和格雷特’,
‘数字’:{4:1.0,5:1.0,6:2.0})
lst_df=pd.DataFrame(lst,columns=['words'])
合并的测向=lst测向。合并(测向,
左"字",,
右(on='Character',
怎么走
#b按价值有条件地支付
合并的_-df['Numbers']=合并的_-df['Numbers']+1
m=(合并的_-df['Numbers')).notnull()&合并的_-df['Numbers']
g=m.iloc[:-1].cumsum().iloc[:-1]
合并的_df['Numbers']=合并的_df.groupby(g)['Numbers']\
.申请(
如果x.iat[-1]>1,则λx:x.bfill(limit=int(x.iat[-1]-1))
) - 1
#删除所有没有条件错误的值
merged_df=merged_df.dropna(子集=['Numbers'])
#b输入要匹配的字符
合并的_-df['Character']=合并的_-df['Character'].bfill()
#分组并转换为列表
out_lst=合并的_df.groupby(['Character',
“数字”],
sort=False)['words'].agg(list).to_list()
打印(输出)
输出:

lst1= [['Mickey', 'Mickey Mouse'], ['Donald', 'Donald Duck'], ['Hansel', 'And Gretel', 'Hansel And Gretel'].....]

参考:

*假设:字符名是唯一的。
df
中的每个字符在
df
lst
中都出现一次

[['Mickey', 'Mickey Mouse'], ['Donald', 'Donald Duck'], 
 ['Hansel', 'And Gretel', 'Hansel And Gretel']]