[英]pandas: modifying values in dataframe from another column
在將數據拆分成列時,出現了一些小故障,因此我得到了一些嘈雜的數據。
site code
--- ---
0 apple_123 45
1 apple_456 xy_33
2 facebook_123 24
3 google_123 NaN
4 google_123 pq_51
我需要清理數據,以便得到以下結果:
site code
--- ---
0 apple_123 45
1 apple_456_xy 33
2 facebook_123 24
3 google_123 NaN
4 google_123_pq 51
我已經能夠獲得需要修改的行,但無法進一步進行:
import numpy as np
import pandas as pd
site = ['apple_123','apple_456','facebook_123','google_123','google_123']
code = [45,'xy_33',24,np.nan,'pq_51']
df = pd.DataFrame(list(zip(site,code)), columns=['site','code'])
df[(~df.code.astype(str).str.isdigit())&(~df.code.isna())]
使用Series.str.extract
為獲取非數字和數值來幫助DataFrame
,然后分別處理每個列-刪除_
通過Series.str.strip
,從右側添加Series.radd
和轉換遺漏值來emty串,最后加對列進行code
,第二次使用Series.fillna
將Series.fillna
的值從1
列替換為原始值:
df1 = df.code.str.extract('(\D+)(\d+)')
df['site'] += df1[0].str.strip('_').radd('_').fillna('')
df['code'] = df1[1].fillna(df['code'])
print (df)
site code
0 apple_123 45
1 apple_456_xy 33
2 facebook_123 24
3 google_123 NaN
4 google_123_pq 51
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.