Python 使用与列表对象相关的函数遍历列表
假设我有一个列表:Python 使用与列表对象相关的函数遍历列表,python,list,pandas,iteration,Python,List,Pandas,Iteration,假设我有一个列表: stuff = ['Dogs[1]','Jerry','Harry','Paul','Cats[1]', 'Toby','Meow','Felix'] 是否可以遍历列表,并将动物名称以数据帧格式分配给动物,如: Animal Name Dog Jerry Dog Harry Dog Paul Cat Toby... etc 通过遍历列表 for i in stuff: if '1' in i:
stuff = ['Dogs[1]','Jerry','Harry','Paul','Cats[1]', 'Toby','Meow','Felix']
是否可以遍历列表,并将动物名称以数据帧格式分配给动物,如:
Animal Name
Dog Jerry
Dog Harry
Dog Paul
Cat Toby... etc
通过遍历列表
for i in stuff:
if '1' in i:
new_list.append(i)...
我一直在寻找如何做到这一点,但找不到任何东西 我认为您可以使用第一个
DataFrame
构造函数:
df = pd.DataFrame({'Name':stuff})
print (df)
Name
0 Dogs[1]
1 Jerry
2 Harry
3 Paul
4 Cats[1]
5 Toby
6 Meow
7 Felix
然后新列Animal
,其值为[1]
,最后一次使用面膜的方法是:
另一种可能的解决方案是使用
您可以从dict列表构建数据帧。大概是
dicts = []
animal = ""
for i in stuff:
if '1' in i:
animal = i[:-3]
else:
dicts.append({'Name': i, 'Animal': animal}
pd.DataFrame(dicts)
不过,这(以及我能想象到的任何其他解决方案)确实很脆弱。您最好确定输入的格式。回答得很好。谢谢
df.insert(0, 'Animal', df['Name'].str.extract('(.*)\[1]', expand=False).ffill())
df = df[~df['Name'].str.contains('\[1]')].reset_index(drop=True)
print (df)
Animal Name
0 Dogs Jerry
1 Dogs Harry
2 Dogs Paul
3 Cats Toby
4 Cats Meow
5 Cats Felix
dicts = []
animal = ""
for i in stuff:
if '1' in i:
animal = i[:-3]
else:
dicts.append({'Name': i, 'Animal': animal}
pd.DataFrame(dicts)