pandas:如何使用iterrows()提取的行创建DataFrame?

时间:2017-11-29 10:31:53

标签: python pandas

我有一个大型数据集,并且我试图按特定条件对某些行进行分组(在这种情况下,除了单词的最后两个字母之外的所有字符,即some_string [-1])。

我首先选择行并将它们存储在字典中,其中键作为单词的第一部分,值作为满足该条件的行的元组列表。

(我不知道这是不是最好的方法,请随时提出建议!)

def group_by_name(data, name_column): 
  #simple grouping of bookings according to everything except last two letters of name
  buckets = {};
  i =0;
  for index,booking in data.iterrows():
      buckets.setdefault(str(booking[name_column])[:-1],[]).append((index,booking))
  return buckets

这会返回每个键的对象列表 - 如何将这些对象重新转换为数据帧,以便我可以更轻松地读取和操作它们?

1 个答案:

答案 0 :(得分:1)

我认为你需要groupby

data = pd.DataFrame({  'D':[1,3,5,7,1],
                   'E':[5,3,6,9,2],
                   'F':['asd','tty','tty','tty','asd']})

print (data)
   D  E    F
0  1  5  asd
1  3  3  tty
2  5  6  tty
3  7  9  tty
4  1  2  asd

for i, g in data.groupby(data['F'].str[:-2]):
    print (i)
    print (g)

a
   D  E    F
0  1  5  asd
4  1  2  asd
t
   D  E    F
1  3  3  tty
2  5  6  tty
3  7  9  tty