Python 用另一列中未丢失的对应行替换列中的对应行
我想使用一列中所有未丢失的行替换另一列中相应的行。数据集来自Excel工作簿。数据看起来是这样的,比如说,12列中大约有450000行数据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[
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的对应行,这可能被视为过时数据。然后出现警告是正常的。一切都好,别担心