Python-ValueError:无法将输入数组从形状(5)广播到形状(2)

时间:2019-01-25 09:49:19

标签: python pandas

我已经写了一些代码,该数据包包含在我的数据框中,该数据框由两列组成-一列是字符串,另一列是构思计数-该代码接收数据框,尝试若干分度并将其与计数进行交叉引用以检查它使用的是正确的。我正在寻找的结果是添加一个名为“ Ideas”的新列,其中包含分解出来的想法列表。我的代码如下:

def getIdeas(row):
    s = str(row[0])
    ic = row[1]
    #  Try to break on lines ";;"
    my_dels = [";;", ";", ",", "\\", "//"]

    for d in my_dels:
        ideas = s.split(d)
        if len(ideas) == ic:
            return ideas
    #  Try to break on numbers "N)"
    ideas = re.split(r'[0-9]\)', s)
    if len(ideas) == ic:
        return ideas
    ideas = []
    return ideas

#  k = getIdeas(str_contents3, idea_count3)

xl = pd.ExcelFile("data/Total Dataset.xlsx")
df = xl.parse("Sheet3")

df1 = df.iloc[:,1:3] 

df1 = df1.loc[df1.iloc[:,1] != 0]
df1["Ideas"] = df1.apply(getIdeas, axis=1)

运行此命令时出现错误

ValueError: could not broadcast input array from shape (5) into shape (2)

有人可以告诉我如何解决此问题吗?

1 个答案:

答案 0 :(得分:0)

对于applyaxis=1,您有2个选项,否则您将返回一个值或一个与列数相匹配的长度列表。如果匹配,则其中的列数将广播到整个行。如果返回单个值,它将返回熊猫系列

一种解决方法是不使用Apply。

result = []
for idx, row in df1.iterrows():
    result.append(getIdeas(row))
df1['Ideas'] = result