Python 用另一列中未丢失的对应行替换列中的对应行

Python 用另一列中未丢失的对应行替换列中的对应行,python,pandas,Python,Pandas,我想使用一列中所有未丢失的行替换另一列中相应的行。数据集来自Excel工作簿。数据看起来是这样的,比如说,12列中大约有450000行数据 A B a1 b1 . b2 . b3 a4 b4 a5 b5 这里我在B中有很多非缺失值,我想用它们来替换A中相应的行,不管A中的行是否缺失。B中的数据也缺少值,我将不使用这些值 假设B中的数据是更新的数据,我想用这些信息“更新”A中相应的行。对于B列中任何未丢失的行,我希望使用它们替换A列中相应的行 我运行以下代码: data['A'][data[

我想使用一列中所有未丢失的行替换另一列中相应的行。数据集来自Excel工作簿。数据看起来是这样的,比如说,12列中大约有450000行数据

A B
a1 b1
.  b2
.  b3
a4 b4
a5 b5
这里我在B中有很多非缺失值,我想用它们来替换A中相应的行,不管A中的行是否缺失。B中的数据也缺少值,我将不使用这些值

假设B中的数据是更新的数据,我想用这些信息“更新”A中相应的行。对于B列中任何未丢失的行,我希望使用它们替换A列中相应的行

我运行以下代码:

data['A'][data['B'].notnull()] = data['B'][data['B'].notnull()]
始终存在内存错误,并伴有警告: “SettingWithCopyWarning:试图在数据帧的切片副本上设置值”…”

避免此内存错误的最佳方法是什么

多谢各位

新答案 演示

data

     A    B
0   a1   b1
1  NaN   b2
2  NaN   b3
3   a4  NaN
4   a5   b5
txt = """A B
a1 b1
.  b2
.  b3
a4 .
a5 b5"""

data = pd.read_csv(StringIO(txt), delim_whitespace=True, na_values='.')

设置

data

     A    B
0   a1   b1
1  NaN   b2
2  NaN   b3
3   a4  NaN
4   a5   b5
txt = """A B
a1 b1
.  b2
.  b3
a4 .
a5 b5"""

data = pd.read_csv(StringIO(txt), delim_whitespace=True, na_values='.')
旧答案 如果那些
确实缺失,您可以简单地使用
fillna
inplace=True
将更新现有的
数据

data.A.fillna(data.B, inplace=True)
如果它们实际上是
则可以使用
替换

data.A.replace('.', data.B, inplace=True)

0    a1
1    b2
2    b3
3    a4
4    a5
Name: A, dtype: object

​
这很简单:

data.ix[data.B.notnull(), 'A'] = data.ix[data.B.notnull(), 'B']

我想做的是使用B中所有未丢失的行替换A中所有对应的行(无论它们是否丢失)。我运行了您的代码,但结果似乎不是我想要的。谢谢你,非常感谢!您的代码data.A.update(data.B)正是我想要做的。但它只适用于A中缺少的行,而我希望使用B中所有未缺少的行替换A中相应的行,而不管A中是否缺少这些行。其思想是使用B的非缺失行作为更新数据来替换A的对应行,这可能被视为过时数据。然后出现警告是正常的。一切都好,别担心