我有一个这样的 Dataframe
store ----- LA TX NY LA CA TX LA OR ID
我需要对它们进行排序,然后确定每个值的第一个观察值,以便为唯一值提供资金
store unique ----- ------ CA 1 ID 1 LA 1 LA LA NY 1 OR 1 TX 1 TX
我找到了如何识别唯一值,但我需要它们出现在这样的列中。
ht4b089n1#
首先使用DataFrame.sort_values,然后将1设置为DataFrame.loc与Series.duplicated重复:
DataFrame.sort_values
1
DataFrame.loc
Series.duplicated
df = df.sort_values('store', ignore_index=True) df.loc[~df['store'].duplicated(), 'unique'] = 1 print (df) store unique 0 CA 1.0 1 ID 1.0 2 LA 1.0 3 LA NaN 4 LA NaN 5 NY 1.0 6 OR 1.0 7 TX 1.0 8 TX NaN
webghufk2#
我将使用np.where()与groupby().cumcount()的组合,后跟sort_values():
np.where()
groupby().cumcount()
sort_values()
df['unique'] = np.where(df.groupby(['store']).cumcount() > 0,np.nan,1) df = df.sort_values('store')
退货:
store unique 4 CA 1.0 8 ID 1.0 0 LA 1.0 3 LA NaN 6 LA NaN 2 NY 1.0 7 OR 1.0 1 TX 1.0 5 TX NaN
我在输出中添加了索引值,以显示如何通过索引保留顺序,但如您在问题中所述,通过store重新排列顺序。
store
2条答案
按热度按时间ht4b089n1#
首先使用
DataFrame.sort_values
,然后将1
设置为DataFrame.loc
与Series.duplicated
重复:webghufk2#
我将使用
np.where()
与groupby().cumcount()
的组合,后跟sort_values()
:退货:
我在输出中添加了索引值,以显示如何通过索引保留顺序,但如您在问题中所述,通过
store
重新排列顺序。