当我在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)
但这不起作用。有一种简单的方法可以做到这一点吗?
谢谢!
答案 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