我有一个大型数据集,并且我试图按特定条件对某些行进行分组(在这种情况下,除了单词的最后两个字母之外的所有字符,即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
这会返回每个键的对象列表 - 如何将这些对象重新转换为数据帧,以便我可以更轻松地读取和操作它们?
答案 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