有两种可能理由,你的代码没有按预期方式操作:
cereals.append(dt, ignore_index = True)
是不是做你认为它是。你试图追加一个系列,而不是DataFrame。
cereals.append(dt, ignore_index = True)
不会修改cereals
到位,所以当您返回它时,您将返回一个不变的副本。同等职能应该是这样的:
-
>>> def foo(a):
... a + 1
... return a
...
>>> foo(1)
1
我没有我的机器上测试了这一点,但我认为你是固定的解决方案是这样的:
def addRows(cereals, lines):
for i in np.arange(1,len(lines)):
data = parseLine(lines[i])
new_df = pd.DataFrame(data, columns=cereals.columns)
cereals = cereals.append(new_df, ignore_index=True)
return cereals
顺便说一下..我真的不知道在哪里线是从哪里来的,但马上我至少修改它看起来像这样:
data = [parseLine(line) for line in lines]
cereals = cereals.append(pd.DataFrame(data, cereals.columns), ignore_index=True)
How to add an extra row to a pandas dataframe
你也可以创建一个新的数据帧和仅仅是数据帧附加到现有的一个。例如。
>>> import pandas as pd
>>> empty_alph = pd.DataFrame(columns=['letter', 'index'])
>>> alph_abc = pd.DataFrame([['a', 0], ['b', 1], ['c', 2]], columns=['letter', 'index'])
>>> empty_alph.append(alph_abc)
letter index
0 a 0.0
1 b 1.0
2 c 2.0
正如我在链接注意到,您还可以使用loc
方法对数据帧:
>>> df = empty_alph.append(alph_abc)
>>> df.loc[df.shape[0]] = ['d', 3] // df.shape[0] just finds next # in index
letter index
0 a 0.0
1 b 1.0
2 c 2.0
3 d 3.0