Python 组合具有相同行标签但前缀不同的值-熊猫

Python 组合具有相同行标签但前缀不同的值-熊猫,python,pandas,Python,Pandas,我想将y中的值组合起来,用于不带前缀的相同字母组合。例如,有两个前缀为az和bz的LC实例。我想将LC的y值合并到一个列表中。问题是我有其他没有前缀的字母组合(比如ZG)。这是期望的输出 df = pd.DataFrame({'x':['az_LC','bz_LC','ZG','az_KJ','bz_KJ'],'y':[1,2,3,4,5]}) 编辑:我的一些字母组合包括下划线,但它们仍然是唯一的 x y 0 LC [1,2] 1 ZG [3] 2 KJ [4,5]

我想将
y
中的值组合起来,用于不带前缀的相同字母组合。例如,有两个前缀为
az
bz
LC
实例。我想将
LC
y
值合并到一个列表中。问题是我有其他没有前缀的字母组合(比如
ZG
)。这是期望的输出

df = pd.DataFrame({'x':['az_LC','bz_LC','ZG','az_KJ','bz_KJ'],'y':[1,2,3,4,5]})
编辑:我的一些字母组合包括下划线,但它们仍然是唯一的

   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]})

IIUC
str.split
with
pd.Series.groupby

   x      y
0  LC    [1,2]
1  ZG    [3]
2  KJ    [4,5]
3  U_FT  [6]

更新

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]

谢谢@Wen Ben,就是这样。然而,我意识到我的一些字母组合使用下划线,即使它们是唯一的。我用一个例子编辑了我的问题。在本例中,我希望保留前缀,因为它实际上是名称的一部分。但是,您的代码消除了下划线之前的所有内容。你会如何处理这个问题?@HappyPy这很难,只有你知道x中的perfix是什么,然后我们才能拆分数据帧,一个一个地做。我知道我想忽略的前缀总是
az
bz
。我只是不知道如何告诉熊猫如何根据一些前缀而不是其他前缀分割。。。你的意思是像循环一样一个接一个地做吗?啊,我明白了,这是有道理的!再次感谢你的帮助!
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