[英]combine values with identical row labels but different prefixes - pandas
df = pd.DataFrame({'x':['az_LC','bz_LC','ZG','az_KJ','bz_KJ'],'y':[1,2,3,4,5]})
我想將y
的值組合為相同的字母組合(不帶前綴)。 例如,存在兩個帶有前綴az
和bz
的LC
實例。 我想將LC
的y
值合並到一個列表中。 問題是我還有其他沒有前綴的字母組合(例如ZG
)。 這是所需的輸出
x y
0 LC [1,2]
1 ZG [3]
2 KJ [4,5]
編輯:我的一些字母組合包括下划線,但它們仍然是唯一的
df = pd.DataFrame({'x':['az_LC','bz_LC','ZG','az_KJ','bz_KJ','U_FT'],'y':[1,2,3,4,5,6]})
所需的輸出
x y
0 LC [1,2]
1 ZG [3]
2 KJ [4,5]
3 U_FT [6]
IIUC str.split
與pd.Series.groupby
df.y.groupby(df.x.str.split('_').str[-1]).apply(list).reset_index()
Out[103]:
x y
0 KJ [4, 5]
1 LC [1, 2]
2 ZG [3]
更新
df1=df.loc[df.x.str.startswith(('az','bz'))]
df2=df.drop(df1.index)
s1=df1.y.groupby(df1.x.str.split('_',1).str[-1]).apply(list)
s2=df2.y.groupby(df2.x).apply(list)
df=pd.concat([s1,s2])
df
Out[113]:
x
KJ [4, 5]
LC [1, 2]
U_FT [6]
ZG [3]
Name: y, dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.