Pandas dataFrame追加并添加新列

时间:2017-04-11 14:43:00

标签: pandas dataframe

当我在for循环中“找到”它们时,我试图将数据框附加在一起,以及添加其他列。

我的意思是:

我有一个现有的数据框X

a    b   c
1    2   3
5    6   7
9    10  11

我有一个for循环,我“找到”符合条件参数的某些行。然后,我想将这些行添加到空框架中,并添加其他列。因此,新数据框Y将是:

a   b   c  next
5   6   7   8

其中next是添加的新列。到目前为止,我试图以下列方式添加:

allInfo = pd.DataFrame(columns=[list(X), "next"])
allInfo = allInfo.append([a[a.apply(lambda x:someConditional,axis=1)], valueNext],ignore_index=True)

但这不起作用。有一种简单的方法可以做到这一点吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为最好是在循环中创建DataFrames的列表,并最后使用concat和原始df一起使用。

final = pd.concat([df, df1, df2, df3,...])

但更好的是避免熊猫中的所有循环,因为速度慢。

df1 = df[df.a == 5].copy()
df1['next'] = 8
print (df1)
   a  b  c  next
1  5  6  7     8

df2 = df[df.a == 1].copy()
df2['next'] = 10
print (df2)
   a  b  c  next
0  1  2  3    10

dfs = [df, df1, df2]
final = pd.concat(dfs, ignore_index=True)
print (final)

   a   b   c  next
0  1   2   3   NaN
1  5   6   7   NaN
2  9  10  11   NaN
3  5   6   7   8.0
4  1   2   3  10.0