Leetcode-30 Days of Pandas整理(1/2)
Hello,這篇整理了我在進行Leetcode-30 Days of Pandas所遇到的各種問題與解答,同時也彙整了一些基礎語法,各種用法都會有對應的題目,如果有更好的方式也歡迎一起討論!
(本篇文章以markdown撰寫,參考文件為https://markdown.tw/)
八月完成Leetcode的免費挑戰以後一直沒時間整理筆記
這幾天一鼓作氣把不熟跟常常搞混的一次放上來
主要都是pandas中會用到的語法,merge,melt,groupby這些
A
a | b | c | d | |
---|---|---|---|---|
0 | value | value | value | value |
1 | value | value | value | value |
2 | value | value | value | value |
df=A[(A['a']>=100|A['b']>=200)]
#table A中篩選特定數值
#相關用法: | ->or, & -> and
df=A[['a']].rename(columns={'a':'a1'})
#rename column name
df=A[A['a']=A['b']]
#a的內容=b
df1=df.drop_duplicates().sort_values(by='a')
df=A[A['b'].str.len()>15]
#篩選b中字串長度>15的欄位
A['c']=A[~A['b'].str.startswith('AB')]
#將b欄位中開頭不為AB的欄位額外新增,並命名為c
str.capitalize()
#首字大寫
str.match(r'^[a-zA-Z][a-zA-Z\d_.-]@leetcode\.com')]
#@leetcode.com結尾
#首字為字母
#帳號包含-._
str.contains(r'^(^DIAB1)|( DIAB1)')
#包含 DIAB1的字串(DIAB100,ALNE DIAB100…)
A
id | name | salary | d_id | |
---|---|---|---|---|
0 | ||||
1 | ||||
2 |
B
id | name | |
---|---|---|
0 | value | value |
1 | value | value |
2 | value | value |
df1=A.merge(B,left_on='d_id',right_on='id',\
suffix=('_A','_B'))
salarymax=df1.groupby('d_id',group_keys=False).\
apply(lambda x:x[x['salary']==x['salary'].max()])
id_A | name_A | salary_A | d_id | name_B |
---|---|---|---|---|
1 | ||||
2 | ||||
3 |
A
id | shop1 | shop2 | shop3 | |
---|---|---|---|---|
0 | 1 | price | price | price |
1 | 2 | price | price | price |
2 | 3 | price | price | price |
df=pd.Dataframe[A.melt(id_vars=['id'],var_name=['shop']\
,value_name=['price']).dropna()
id | shop | price | |
---|---|---|---|
0 | 1 | shop1 | price |
1 | 2 | shop2 | price |
2 | 1 | shop2 | price |
A
id | event_day | in | out |
---|---|---|---|
1 | 2020-01-23 | 4 | 23 |
A['total_time']=A['out']-['in']
#add new column,value=outtime-intime
final=A.groupby(['id','event_day'])\
['total_time'].sum().reset_index()
#同個id在同一天的時間加總後,重設index
event_day | id | total_time |
---|---|---|
2020-01-23 | 1 | 19 |
A
date | product |
---|---|
2020-01-23 | a |
2020-01-23 | b |
2020-01-23 | c |
df=A.grouptby('date')['product'].agg(['unique',lanbda x: ','.join(sorted(set(x)))].reset_index()
df.columns=['date','nums_sold','products']
df['products']=df['products'].str.replcace(r'(^|)Mask(,|$)',r'\1Mask\2')
result=df.sort_values(by='date')
date | nums_sold | product |
---|---|---|
2020-01-23 | number | a,b,c |
第一次用Markdown語法編輯文章
需要一點時間適應一下!
Comments