Pandas groupby(';columns';).apply(';';.join()),将所有单元格连接到一个字符串

Pandas groupby(';columns';).apply(';';.join()),将所有单元格连接到一个字符串,pandas,Pandas,df.groupby('columns')。应用(''.join()),将所有单元格连接到一个字符串 这适用于初级数据处理器。在过去,我尝试过很多方法 import pandas as pd data = {'key':['a','b','c','a','b','c','a'], 'profit': [12,3,4,5,6,7,9],'income':['j','d','d','g','d','t','d']} df = pd.DataFrame(data) df = df.set_index

df.groupby('columns')。应用(''.join())
,将所有单元格连接到一个字符串

这适用于初级
数据处理器
。在过去,我尝试过很多方法

import pandas as pd
data = {'key':['a','b','c','a','b','c','a'], 'profit': 
[12,3,4,5,6,7,9],'income':['j','d','d','g','d','t','d']}
df = pd.DataFrame(data)
df = df.set_index(‘key’)
#df2 is expected result
data2 = {'a':['12j5g9d'],'b':['3d6d'],'c':['4d7t']}
df2 = pd.DataFrame(data2)
df2 = df2.set_index(‘key’)

这个问题可以通过两种不同的方式解决:

首先,通过连接
利润
收入
列,添加一个额外的列

import pandas as pd
data = {'key':['a','b','c','a','b','c','a'], 'profit': 
[12,3,4,5,6,7,9],'income':['j','d','d','g','d','t','d']}
df = pd.DataFrame(data)
df = df.set_index('key')
df['profinc']=df['profit'].astype(str)+df['income']
1) 使用

2) 使用及

上述两种方法的结果相同:

key
a    12j5g9d
b       3d6d
c       4d7t

这个问题可以通过两种不同的方式解决:

首先,通过连接
利润
收入
列,添加一个额外的列

import pandas as pd
data = {'key':['a','b','c','a','b','c','a'], 'profit': 
[12,3,4,5,6,7,9],'income':['j','d','d','g','d','t','d']}
df = pd.DataFrame(data)
df = df.set_index('key')
df['profinc']=df['profit'].astype(str)+df['income']
1) 使用

2) 使用及

上述两种方法的结果相同:

key
a    12j5g9d
b       3d6d
c       4d7t

下面是一个简单的解决方案,首先将整数转换为字符串,然后连接利润和收入,最后连接同一个键下的所有字符串:

data = {'key':['a','b','c','a','b','c','a'], 'profit':
    [12,3,4,5,6,7,9],'income':['j','d','d','g','d','t','d']}
df = pd.DataFrame(data)
df['profit_income'] = df['profit'].apply(str) + df['income']
res = df.groupby('key')['profit_income'].agg(''.join)
print(res)


output:
   key
   a    12j5g9d
   b       3d6d
   c       4d7t
   Name: profit_income, dtype: object

下面是一个简单的解决方案,首先将整数转换为字符串,然后连接利润和收入,最后连接同一个键下的所有字符串:

data = {'key':['a','b','c','a','b','c','a'], 'profit':
    [12,3,4,5,6,7,9],'income':['j','d','d','g','d','t','d']}
df = pd.DataFrame(data)
df['profit_income'] = df['profit'].apply(str) + df['income']
res = df.groupby('key')['profit_income'].agg(''.join)
print(res)


output:
   key
   a    12j5g9d
   b       3d6d
   c       4d7t
   Name: profit_income, dtype: object

这两个问题看起来都一样,只是你的问题不清楚,而且你的代码看起来没有正确粘贴。请编辑您的问题并使其具有可回答性。这两个问题看起来都一样,只是
df2=df.reset_index()
您的问题不清楚,您的代码看起来没有正确粘贴。请编辑您的问题并使其具有可回答性。您的解决方案与问题的预期结果不匹配。@Mattias我同意您的意见,除非您在回答问题时不提问。带有
df2=…
的最后一行使用
data
而不是
data2
@IMC这是真的,问题需要编辑和澄清,这样才有意义。是的,很抱歉。@Todd如果有效,你可以点击绿色按钮将其标记为已回答!谢谢您的解决方案与问题的预期结果不匹配。@Mattias我同意您的意见,除非您在回答问题时不提问。带有
df2=…
的最后一行使用
data
而不是
data2
@IMC这是真的,问题需要编辑和澄清,这样才有意义。是的,很抱歉。@Todd如果有效,你可以点击绿色按钮将其标记为已回答!谢谢