我正在嘗試根據SOURCEdistinct 的列值創建新列ID。由于來源不同,因此具有不同或相同名稱的相同 ID 有多個記錄。我正在嘗試創建新列以根據列值CNAME標準化每個 ID 的名稱。SOURCE
對于每個ID,CNAME列應該等于NAMEwhere SOURCE==A
東風:
ID NAME SOURCE
1 ABC B
1 ABC C
1 AXY A
2 XYZ B
2 XYZ A
3 SASA D
3 SASA B
3 SSA A
3 SSA C
4 BVA A
4 BA B
5 NAS A
5 VAN B
輸出:
ID NAME SOURCE CNAME
1 ABC B AXY
1 ABC C AXY
1 AXY A AXY
2 XYZ B XYZ
2 XYZ A XYZ
3 SASA D SSA
3 SASA B SSA
3 SSA A SSA
3 SSA C SSA
4 BVA A BVA
4 BA B BVA
5 NAS A NAS
5 VAN B NAS
分組后,我無法理解如何將所有行的值填充到新列。我也嘗試使用,transform但沒有運氣。
df.groupby('ID').apply(lambda x: np.where(x['SOURCE'] == 'A', x['NAME'],' '))
uj5u.com熱心網友回復:
sort_values, groupby ID 并使用變換廣播每組中的第一個 SOURCE
df['CNAME'] = df.sort_values(by=['ID','SOURCE']).groupby('ID')['NAME'].transform('first')
按照您的澄清問題,您可以;
s=df.query("SOURCE=='A'")#Filter all the A now that they are not repeated
df['CNAME'] = df['ID'].map(dict(zip(s['ID'],s['NAME'])))#create dict and map
ID NAME SOURCE CNAME
0 1 ABC B AXY
1 1 ABC C AXY
2 1 AXY A AXY
3 2 XYZ B XYZ
4 2 XYZ A XYZ
5 3 SASA D SSA
6 3 SASA B SSA
7 3 SSA A SSA
8 3 SSA C SSA
9 4 BVA A BVA
10 4 BA B BVA
11 5 NAS A NAS
12 5 VAN B NAS
uj5u.com熱心網友回復:
這有點“sql-ish”(如果您愿意,可以創建一個查找表,然后在連接或合并操作中使用它)但也可以:
# get the list of CNAME ids
ids = df[df.SOURCE == 'A']
# join/merge the two dataframes
new_df = df.merge(ids, on='ID', how='left')
# capture the new columns from the joined dataframe
new_df = new_df[['ID', 'NAME_x', 'SOURCE_x', 'NAME_y']]
# rename the columns
new_df.columns = ['ID', 'NAME', 'SOURCE', 'CNAME']
uj5u.com熱心網友回復:
這不是正確的做法......但是當您想要選擇自定義專案時它可以作業,就像SOURCE B在這種情況下
mapper = df[df['SOURCE']=='B'].set_index('ID')['NAME']
mapper.name = 'NEWID'
df.merge(mapper, on='ID')
ID NAME SOURCE NEWID
0 1 ABC B ABC
1 1 ABC C ABC
2 1 AXY A ABC
3 2 XYZ B XYZ
4 2 XYZ A XYZ
5 3 SASA D SASA
6 3 SASA B SASA
7 3 SSA A SASA
8 3 SSA C SASA
9 4 BVA A BA
10 4 BA B BA
11 5 NAS A VAN
12 5 VAN B VAN
uj5u.com熱心網友回復:
你可以試試這個:
df = df.sort_values(by=['ID','SOURCE'])
df.loc[df['SOURCE'] == 'A','CNAME'] = df.NAME
df.CNAME = df['CNAME'].ffill()
df
| 指數 | ID | 姓名 | 資源 | CNAME |
|---|---|---|---|---|
| 2 | 1 | 軸心 | 一個 | 軸心 |
| 0 | 1 | 美國廣播公司 | 乙 | 軸心 |
| 1 | 1 | 美國廣播公司 | C | 軸心 |
| 4 | 2 | XYZ | 一個 | XYZ |
| 3 | 2 | XYZ | 乙 | XYZ |
| 7 | 3 | SSA | 一個 | SSA |
| 6 | 3 | 莎莎 | 乙 | SSA |
| 8 | 3 | SSA | C | SSA |
| 5 | 3 | 莎莎 | D | SSA |
| 9 | 4 | 英屬維爾京群島 | 一個 | 英屬維爾京群島 |
| 10 | 4 | 文學學士 | 乙 | 英屬維爾京群島 |
| 11 | 5 | NAS | 一個 | NAS |
| 12 | 5 | 貨車 | 乙 | NAS |
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486104.html
