更新系列/字典中匹配列的熊猫数据框行值

问题描述:

我想用熊猫系列或字典中的数据更新熊猫数据框中的某些单元格值。在后面的变量中,indeces/keys与dataframe列名称相匹配,但可能会更少。例如:更新系列/字典中匹配列的熊猫数据框行值

import pandas as pd 
import numpy as np 

data = {'Col1' : [4,5,6,7], 'Col2' : [10,20,30,40], 'Col3' : [100,50,-30,-50], 'Col4' : ['AAA', 'BBB', 'AAA', 'CCC']} 
df = pd.DataFrame(data=data, index = ['R1','R2','R3','R4']) 

print df 

    Col1 Col2 Col3 Col4 
R1  4 10 100 AAA 
R2  5 20 50 BBB 
R3  6 30 -30 AAA 
R4  7 40 -50 CCC 

series = pd.Series(data=[1, 2, 3, 4], index=['Col1', 'Col2', 'Col3', 'Col4']) 
series_inverse = pd.Series(data=[1, 2, 3, 4], index=['Col4', 'Col3', 'Col2', 'Col1']) 
series_imcomplete = pd.Series(data=[2, 3], index=['Col2', 'Col3']) 

df.iloc[2] = series_imcomplete 

print df 

这给:

Col1 Col2 Col3 Col4 
R1 4.0 10.0 100.0 AAA 
R2 5.0 20.0 50.0 BBB 
R3 NaN 2.0 3.0 NaN 
R4 7.0 40.0 -50.0 CCC 

此操作找到合适的列,但如果有更少的条目那些与空值替换。期望的输出应该是:

Col1 Col2 Col3 Col4 
R1  4 10 100 AAA 
R2  5 20 50 BBB 
R3  6 2.0 3.0 AAA 
R4  7 40 -50 CCC 

我已经找到列解决方案,使用替换,但是我不能让它适用于行。

我想知道有没有人能给我一些建议。

+1

你能举一个你想要的输出的例子吗? – beeftendon

+0

@beeftendon这是一个好主意。 – Delosari

试试这个:

In [139]: df.loc[df.index[2], series_imcomplete.index] = series_imcomplete 

In [140]: df 
Out[140]: 
    Col1 Col2 Col3 Col4 
R1  4 10 100 AAA 
R2  5 20 50 BBB 
R3  6  2  3 AAA 
R4  7 40 -50 CCC 

UPDATE:从熊猫0.20.1 the .ix indexer is deprecated, in favor of the more strict .iloc and .loc indexers开始。