使用 for 循环更新 Pandas 数据帧中的值

时间:2021-06-08 14:32:21

标签: python pandas dataframe

我有一个空的 Pandas 数据框 A,如下所示:

col1  col2
 A     nan
 B     nan
 C     nan

我想用来自不同数据框 B 的值填充 col2,如下所示:

A    B     C
0.4  0.7  0.9

因此生成的 df A 应该如下所示:

col1  col2
 A     0.4
 B     0.7
 C     0.9

我在 A 中使用了更多列,因此无法进行转置。我想使用 for 循环使用:

for i, row in A.iterrows():
    A.at[i, 'col2'] = B.loc[:,B.columns.str.contains(row['col1'])

然而,这给我带来了多个错误,有人知道我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

使用 pd.Series.map

A['col2'] = A['col1'].map(B.T[0])

  col1  col2
0    A   0.4
1    B   0.7
2    C   0.9

答案 1 :(得分:0)

在这里您可以使用pandas合并功能,您可以根据公共列或列将列从一个数据帧转移到另一个数据帧

import pandas as pd
A = pd.DataFrame({'col1':['A','B','C']})
B = pd.DataFrame({'col1':['A','B','C'], 'col2':[0.2,0.4,0.3]})
A = pd.merge(A,B, on="col1", how="left")

或者如果你的 B 数据框看起来像这样

 A    B    C
0.2  0.4  0.3

#那么代码可以这样

new_df = pd.DataFrame()
new_df['col1'] = B.columns
new_df['col2'] = B.iloc[0].values
A = pd.merge(A,new_df, on="col1", how="left")