将pandas Dataframe中的一行连接起来

4
这似乎应该更简单,但我还是在这里。
我正在尝试从另一个数据框中添加一行到一个数据框(实际上是两个数据框),但我遇到了以下错误:
TypeError: cannot concatenate object of type "<class 'numpy.float64'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

我的代码

for i in range(0,len(k_means_labels_unique)):
    X = pd.DataFrame(columns=['first occurrence of \'AB\'','similarity to \'AB\''])
    y = pd.DataFrame(columns=['Class'])
    for row in result.iterrows():
        data=row[1]
        if data['cluster ID'] == i:
            X = pd.concat([X,data['first occurrence of \'AB\''],data['similarity to \'AB\'']])
            y = pd.concat([y,data['Class']])

我需要把 data['first occurrence of \'AB\''],data['similarity to \'AB\''] 转换成另一个数据框吗?这似乎非常低效。

编辑:我尝试了 y = pd.concat([y,pd.Series(data['Class'])]) 但是它将数据附加为新列,例如 y

columns


1
尝试先将您的向量转换为 pd.Series:例如:y = pd.concat([y,pd.Series(data['Class'])]) - CoMartel
@CoMartel 差不多了,但似乎会将该系列添加为新列(我将在我的问题中更新屏幕截图)。 - Jessica Chambers
1
添加示例输入和预期输出 - Mohamed Thasin ah
1
我的错:我认为您需要先将数据转换为数据框。请参见https://pandas.pydata.org/pandas-docs/stable/merging.html#concatenating-objects - CoMartel
1个回答

2

首先需要转换为数据帧(dataframe):

X = pd.concat([X,pd.DataFrame([[data['first occurrence of \'AB\''],data['similarity to \'AB\'']]],columns=['first occurrence of \'AB\'','similarity to \'AB\''])], ignore_index=True)
y = pd.concat([y,pd.DataFrame([data['Class']], columns=['Class'])], ignore_index=True)

编辑:添加 ignore_index=True


好的,我尝试了这个,但是却得到了以下错误:ValueError: 传递值的形状为(1,2),索引暗示为(2,2)。 - Jessica Chambers
在哪一行? - CoMartel
data长什么样? - CoMartel
打印第一行:'AB'的第一个出现位置为-1.000000,与'AB'的相似度为0.222222,类别为0.000000,簇ID为0.000000,质心x坐标为-1.000000,质心y坐标为0.215873,名称为0,数据类型为float64。 - Jessica Chambers
1
我添加了一些缺失的[],你可以再试一次吗? - CoMartel
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接