从另一个数据框架中撤出一个数据时,我被编写了Python代码

发布于 2025-02-13 03:42:01 字数 647 浏览 0 评论 0原文

我有两个数据帧。

df1 = pd.DataFrame({'vin':['aaa','aaa','aaa','bbb','ccc','ccc','ddd','eee','eee','fff'],'module':['ABS','ABS','IPMA','BCCM','HPOC','ABS','ABS','HPOC','ABS','ABS']})


df2 = pd.DataFrame({'vin':['aaa','bbb','ccc','ddd','eee','fff']})

因此,基本上,在DF2中,我想从DF1用相应的列“ VIN”从DF1中拉出“模块”列的值,但挑战是我希望一个由一个逗号分隔的单元格中的所有值。 我尝试了以下命令。

df_merge = pd.merge(df2, df1[['module','vin']], on ='vin', how ='left')

现在,这条代码行的问题是,它正在以我不想要的多行中拉数据。

我的预期输出将是这样: -

df2 = pd.DataFrame({'vin':['aaa','bbb','ccc','ddd'],'module':['ABS,ABS,IPMA','BCCM','HPOC,ABS','ABS']})

I have two data frames.

df1 = pd.DataFrame({'vin':['aaa','aaa','aaa','bbb','ccc','ccc','ddd','eee','eee','fff'],'module':['ABS','ABS','IPMA','BCCM','HPOC','ABS','ABS','HPOC','ABS','ABS']})


df2 = pd.DataFrame({'vin':['aaa','bbb','ccc','ddd','eee','fff']})

So basically in df2, I want to pull values of the 'module' column from df1 with the respective column 'vin' but the challenge is I want all values in one cell separated by a comma.
I tried the below command.

df_merge = pd.merge(df2, df1[['module','vin']], on ='vin', how ='left')

Now the problem with this line of code is, that it is pulling data in multiple rows that I don't want.

My expected output will be like this:-

df2 = pd.DataFrame({'vin':['aaa','bbb','ccc','ddd'],'module':['ABS,ABS,IPMA','BCCM','HPOC,ABS','ABS']})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲欢浪云 2025-02-20 03:42:01

检查下面的代码

df_merge = pd.merge(df2, df1.groupby(['vin'])['module'].apply(list), on ='vin', how ='left')
df_merge['module'] = df_merge['module'].astype('str').str.replace("\[|\]|\'| ","")
df_merge

输出:

“在此处输入图像描述”

Check below code

df_merge = pd.merge(df2, df1.groupby(['vin'])['module'].apply(list), on ='vin', how ='left')
df_merge['module'] = df_merge['module'].astype('str').str.replace("\[|\]|\'| ","")
df_merge

Output:

enter image description here

从来不烧饼 2025-02-20 03:42:01

您可以简单地做:

df2.merge(df1, how='left').groupby('vin').agg({'module': lambda x: ', '.join(x)})

它给您:

VIN模块
AAAABS,ABS,IPMA
BBBBCCM
CCCHPOC,ABS
DDDABS
EEEHPOC,ABS
FFFABS

You can simply do:

df2.merge(df1, how='left').groupby('vin').agg({'module': lambda x: ', '.join(x)})

It gives you:

vinmodule
aaaABS, ABS, IPMA
bbbBCCM
cccHPOC, ABS
dddABS
eeeHPOC, ABS
fffABS
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文