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
withpd.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