热线电话:13121318867

登录
2019-01-25 阅读量: 930
如何使用.loc将数据帧行附加到for循环中的另一个?

假设我有以下数据帧:

df_t1 = pd.DataFrame([["AAA", 1 ,2],["BBB", 0, 3],["CCC", 1, 2],["DDD", 0, 0],["EEE", 0, 3]], columns=list('ABC'))

A B C

0 AAA 1 2

1 BBB 0 3

2 CCC 1 2

3 DDD 0 0

4 EEE 0 3

df_t2 = pd.DataFrame([["XXX", 4, 1],["YYY", 5 ,6],["ZZZ", 0, 3]], columns=list('ABC'))

A B C

0 XXX 4 1

1 YYY 5 6

2 ZZZ 0 3

我可以使用下面的代码在df_t1中找到满足特定条件的行:

df_t1.loc[(df_t1['B'] <= 2) & (df_t1['C'] > 2)]

A B C

1 BBB 0 3

4 EEE 0 3

df_t1.loc[(df_t1['B'] <= 3) & (df_t1['C'] > 3)]

A B C

[Empty Dataframe]

我可以创建一个返回相同结果的for循环:

for i in value_check:

print(df_t1.loc[(df_t1['B'] <= i) & (df_t1['C'] > i)])

A B C

1 BBB 0 3

4 EEE 0 3

Empty DataFrame

Columns: [A, B, C]

Index: []

但是当我尝试使用该代码将这些值附加到df_t2时:

value_check = [2,3]

for i in value_check:

df_t2.append(df_t1.loc[(df_t1['B'] <= i) & (df_t1['C'] > i)])

df_t2没有变化

############分割线#########

我发现了!运用 pd.concat

df_t1 = pd.DataFrame([["AAA", 1 ,2],["BBB", 0, 3],["CCC", 1, 2],["DDD", 0, 0],["EEE", 0, 3]], columns=list('ABC'))

df_t2 = pd.DataFrame([["XXX", 4, 1],["YYY", 5 ,6],["ZZZ", 0, 3]], columns=list('ABC'))

value_check = [2, 3]

for i in value_check:

condition = (df_t1['B'] <= i) & (df_t1['C'] > i)

row_to_add = df_t1.loc[condition]

df_t2 = pd.concat([df_t2, row_to_add], axis=0)

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子