gpt4 book ai didi

python - 拼接并组合两列以形成新的数据框(Pandas)

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:13 26 4
gpt4 key购买 nike

我需要将我的 pandas 数据框转换成一个有点奇怪的列表。我有以下示例 Pandas 数据框:

输入数据框:

mydf= pd.DataFrame.from_dict({'ARS':['xx2','xx3','xx1'], 'xyz':['yy1','xx2','xx3'], 'ppp':['xx3','yy2','xx2']}, orient='columns')
mydf= mydf.stack().reset_index()
mydf.columns= ['list1','list2','list3']
newdf= mydf[['list2','list3']]
newdf

list2 list3
0 ARS xx2
1 ppp xx3
2 xyz yy1
3 ARS xx3
4 ppp yy2
5 xyz xx2
6 ARS xx1
7 ppp xx2
8 xyz xx3

所需的数据框:

>ARS
xx2
xx3
xx1
>ppp
xx3
yy2
xx2
>xyz
yy1
xx2
xx3

有没有人有简单的 pandas 方法来转换它?

最佳答案

这是使用 groupbypd.concat 和索引的 Pandas 方法:

(newdf.groupby('list2',as_index=False)
.apply(lambda x: pd.concat([pd.Series(x.iloc[0]['list2']),
pd.Series(x.loc[:,'list3'])]))
.reset_index(drop=True))

输出:

0     ARS
1 xx2
2 xx3
3 xx1
4 ppp
5 xx3
6 yy2
7 xx2
8 xyz
9 yy1
10 xx2
11 xx3
dtype: object

如果您真的想要那个“>”符号,请使用以下命令:

(newdf.groupby('list2',as_index=False)
.apply(lambda x: pd.concat([pd.Series('>'+x.iloc[0]['list2']),
pd.Series(x.loc[:,'list3'])]))
.reset_index(drop=True))

输出:

0     >ARS
1 xx2
2 xx3
3 xx1
4 >ppp
5 xx3
6 yy2
7 xx2
8 >xyz
9 yy1
10 xx2
11 xx3
dtype: object

关于python - 拼接并组合两列以形成新的数据框(Pandas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45314157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com