pandas 我如何识别列 Dataframe 中每个值的第一个观察值?

k7fdbhmy  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(146)

我有一个这样的 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

我找到了如何识别唯一值,但我需要它们出现在这样的列中。

ht4b089n

ht4b089n1#

首先使用DataFrame.sort_values,然后将1设置为DataFrame.locSeries.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
webghufk

webghufk2#

我将使用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重新排列顺序。

相关问题