我有一个空的 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'])
然而,这给我带来了多个错误,有人知道我做错了什么吗?
答案 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")