如何获得熊猫数据框中列的唯一长度?

时间:2020-09-25 08:10:21

标签: python pandas

这是csv数据:

staff_id,clock_time,device_id,latitude,longitude
1003,2020/8/27 2:55,d_8,26.39899424,117.7866387
1003,2020/8/26 7:45,d_8,26.39900029,117.7866379
1003,2020/8/26 3:09,d_8,26.40672436,117.8008659
1003,2020/8/26 0:26,d_8,26.89169118,117.1612365
1234567,2020/8/25 9:38,d_8,26.89764297,117.1760012
123456789,2020/5/19 8:29,d_8,24.47420087,118.1085551
1003,2020/5/18 9:06,d_8,24.473124,118.1705641
1003,2020/5/16 7:54,d_8,24.5101858,117.8954614

我使用以下代码来获取数据帧中的staff_id唯一长度:

import pandas as pd

df = pd.read_csv(r'for_test.csv', encoding='utf-8',parse_dates=[1])
staff_id_list = df.staff_id.values.tolist()
staff_id_length_list = [len(str(item)) for item in staff_id_list]
staff_id_length_list = list(set(staff_id_length_list))
print(staff_id_length_list)

输出为:[9, 4, 7]

尽管输出正确,但我想使用pandas方法获取长度而不是python方法。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

Series.astypeSeries.str.lenSeries.unique结合使用:

a = df.staff_id.astype(str).str.len().unique()
print (a)
[4 7 9]

如果需要列表:

L = df.staff_id.astype(str).str.len().unique().tolist()
print (L)
[4, 7, 9]

答案 1 :(得分:1)

pandas.Series.astypestr.lenunique一起使用:

df["staff_id"].astype(str).str.len().unique()

输出:

array([4, 7, 9])

答案 2 :(得分:1)

您可以尝试以下-

df['len'] = df['staff_id'].str.len().drop_duplicates()
相关问题