pandas TypeError:无法连接类型为“< class”str '>“的对象;只有Series和DataFrame对象有效

d8tt03nd  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(93)

通过查看第一列字符串和第二列字符串来给出唯一代码,每当第一列字符串更改时,它都从1开始
范例:


的数据
我使用这个代码:

dfs = dict(tuple(df.groupby('colummen1')))
for _, df in dfs.items():

 df['id'] = df.groupby(['colummen1','colummun2']).ngroup()  

dfs = [df[1] for df in dfs]
df = pd.concat(dfs)

字符串
但我得到了这个错误:


ezykj2lf

ezykj2lf1#

您的代码可以通过以下方式更新:

import pandas as pd

# set data
data = {"colummen1": ["Kenbele1", "Kenbele1", "Kenbele1", "Kenbele1", "Kenbele2", "Kenbele2", "Kenbele2", "Kenbele2"], 
        "colummun2": ["Commutity1", "Commutity2", "Commutity3", "Commutity4", "Commutity1", "Commutity2", "Commutity3", "Commutity4"]}

# create dataframe
df = pd.DataFrame(data)

dfs = df.groupby('colummen1')

dfs_updated = []

for _, df in dfs:
    df['id'] = df.groupby(['colummen1','colummun2']).ngroup()+1
    dfs_updated.append(df)
    
df_new = pd.concat(dfs_updated)

df_new

字符串
返回


的数据

krcsximq

krcsximq2#

我们并不清楚你期望的是什么,但是当你写df[1] for df in dfs时,你的df是一个键(例如 Kebele 1),df[1]是一个字符(例如 e -字符串的第二个字符)。
这就是为什么你得到这个错误,因为你的数组dfs是由2个字符["e", "e"]构成的。因此你不能连接它。
我认为df[1]是指与键关联的 Dataframe ,如果是这样,那么代码应该如下所示:

dfs = dict(tuple(df.groupby('colummen1')))

for _, df in dfs.items():
    df['id'] = df.groupby(['colummen1','colummun2']).ngroup()  

dfs = [df for _, df in dfs.items()]
df = pd.concat(dfs)

字符串

相关问题