我有一个非常大的数据框,其中一列有一组名称。不幸的是,同一列中还有一些其他数据。我要做的是找到包含名称的所有行,在另一列中查找这些行,从第三列中获取最大值。然后,我需要将该值与名称放在同一行中
我目前正在使用一个for
循环,它完全符合我的要求,但速度非常慢。我试过玩弄lookup
,但没能让它发挥作用。请记住,真正的数据帧大约有20000行
import pandas as pd
import numpy as np
friends = ['Mickey', 'Minnie', 'Goofy', 'Donald', 'Daisy', 'Pluto']
df_data = {'Name':['Mickey', 'Ravens', 'Vikings',
'Minnie', 'Packers', 'Browns',
'Goofy', 'Cowboys', 'Steelers',
'Donald', '49ers', 'Bears',
'Daisy', 'Chiefs', 'Raiders',
'Pluto', 'Patriots', 'Colts'],
'Owner': [np.nan, 'Mickey', 'Mickey',
np.nan, 'Minnie', 'Minnie',
np.nan, 'Goofy', 'Goofy',
np.nan, 'Donald', 'Donald',
np.nan, 'Daisy', 'Daisy',
np.nan, 'Pluto', 'Pluto'],
'Wins': [np.nan, 14, 10,
np.nan, 13, 6,
np.nan, 8, 8,
np.nan, 13, 8,
np.nan, 12, 7,
np.nan, 12, 7]}
df = pd.DataFrame(data = df_data)
for f in friends:
df.loc[df['Name'] == f, 'Wins'] = df.loc[df['Owner'] == f, 'Wins'].max()
print(df.to_string())
IIUC,你可以使用
使用} 然后使用}中
Owner
上的^{agg
函数max
创建映射序列s
,现在使用序列s
使用^{Wins
列中的值:相关问题 更多 >
编程相关推荐