我已经写了一些代码,该数据包包含在我的数据框中,该数据框由两列组成-一列是字符串,另一列是构思计数-该代码接收数据框,尝试若干分度并将其与计数进行交叉引用以检查它使用的是正确的。我正在寻找的结果是添加一个名为“ 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)
有人可以告诉我如何解决此问题吗?
答案 0 :(得分:0)
对于apply
和axis=1
,您有2个选项,否则您将返回一个值或一个与列数相匹配的长度列表。如果匹配,则其中的列数将广播到整个行。如果返回单个值,它将返回熊猫系列
一种解决方法是不使用Apply。
result = []
for idx, row in df1.iterrows():
result.append(getIdeas(row))
df1['Ideas'] = result