df1
First Name Last Name
1. John Smith
2. Mary Brohowski
3. Aristidis Papageorgopoulos
4. James Watss
5. Kid Red
df2
1. 2. 3. 4. 5. 6. 7.
First Name Marty Sandy Parry May Manny Rudy Wesley
Last Name Smith Kevin Brohowski Dave Garido Red Redknap
我如何用df1 Name列中的索引1:5替换df2中First Name 2:5列,所以输出将是:
df2
1. 2. 3. 4. 5. 6. 7.
First Name John Mary Aristidis James Kid Rudy Wesle
Last Name Smith Brohowski Papageorgopoulos Watss Red Red Redkn
我尝试过:
df1[['First Name']].combine_first(df2)
就像我对列所做的那样,但这不起作用
答案 0 :(得分:2)
首先请确保数据框1 索引的类型与数据框2 列的类型相匹配:
df2.columns=df2.columns.astype(float)
df1.index=df1.index.astype(float)
然后,您只需要DataFrame.update
(请注意,参数覆盖默认为 True
)+ DataFrame.transpose
:>
df2.update(df1.T)
print(df2)
1.0 2.0 3.0 4.0 5.0 6.0 7.0
First Name John Mary Aristidis James Kid Rudy Wesley
Last Name Smith Brohowski Papageorgopoulos Watss Red Red Redknap
答案 1 :(得分:1)
使用DataFrame.combine_first
就像您只想将第一个DataFrame的值放DataFrame.T
一样:
#if necessary
#df2 = df2.rename(columns=float)
#df1 = df1.rename(index=float)
df = df1.T.combine_first(df2)
print (df)
1.0 2.0 3.0 4.0 5.0 6.0 7.0
First Name John Mary Aristidis James Kid Rudy Wesley
Last Name Smith Brohowski Papageorgopoulos Watss Red Red Redknap
使用DataFrame.iloc
的第一个解决方案-python中只有第一个值不是1
,而是0
,所以:
df2.iloc[0, 0:5] = df1.iloc[0:5, 0]
df2.iloc[1, 1:5] = df1.iloc[1:5, 1]
print (df2)
1. 2. 3. 4. 5. 6. 7.
First Name John Mary Aristidis James Kid Rudy Wesley
Last Name Smith Brohowski Papageorgopoulos Watss Red Red Redknap