我有一个很大的数据集,并且正在尝试按特定条件对某些行进行分组(在本例中,除单词的最后两个字母之外的所有行,即 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
这会返回每个键的对象列表 - 如何将这些对象重新转换为数据帧,以便我可以更轻松地进一步读取和操作它们?
最佳答案
我认为你需要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
关于python - pandas:如何从使用 iterrows() 提取的行创建 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47550613/