python - 使用关联列表对象的函数迭代列表

标签 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:
        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/

相关文章:

python - easy_install 没有安装 Mechanize?

python - 使用Psychopy和/或PyGame在Python中播放声音

python - Discord.py 移动成员而不提及用户

python - 如何使用变量作为标识符输入列表中的项目?

python - 解析不一致的数据时,标题行 "discover"的最佳方法是什么?

python - Pandas 从一列字符串中删除字符

Python Selenium - 纯粹基于其基于主体元素偏移量的位置点击元素

python - 计算列表中的顺序出现和

python - 如何将列表作为参数传递给方法

python - 如何对 pandas DataFrame 进行分组和索引以获得所需的箱形图