假设我有一个列表:
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
然后DataFrame.insert
新专栏 Animal
包含 str.extract
具有 [1]
的值和上次使用 boolean indexing
带面具Series.duplicated
:
df.insert(0, 'Animal', df['Name'].str.extract('(.*)\[1\]', expand=False).ffill())
df = df[df['Animal'].duplicated()].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
使用 str.contains
创建的掩码的另一个可能的解决方案
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
关于python - 使用关联列表对象的函数迭代列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42192332/