【发布时间】:2015-07-02 06:34:54
【问题描述】:
我有以下数据:
Col1 Col2 Col3 Col4
A G K
B L Q
C H M
D N R
E I O
F J P
这就是我想要的:
Col1 NEW Col3
A G K
B Q L
C H M
D R N
E I O
F J P
我尝试过使用following solution,它的工作方式符合我的需要。最终发生的事情是我将拥有数据框 A,然后是数据框 B。B 将包含我的新列,而 A 将保持不变。
我尝试使用 .replace() 和 .fillna() 但我似乎无法正确使用语法。出于某种原因,当我尝试执行以下操作时:
csv[Col2] = csv.replace(to_replace=" ", value=csv[Col4]])
我最终让 Col4 的全部内容覆盖 Col2(包括空格)。这似乎发生在 .replace() 和 .fillna() 中。
我不确定它是否有帮助,但在这些情况下,Col2 只会丢失 Col4 有数据的数据。有什么想法吗?
解决方案
感谢所有回复的人。我现在意识到,由于语法错误,我一直在追我的尾巴。这是我尝试过但无法正常工作的另一行代码。我遇到了“一列覆盖另一列”的问题(见上文)。
csv[Col2] = csv.fillna(csv[Col4]])
但是在重新访问下面 John Galt 链接的那个页面后,我觉得我错过了一些东西......然后它像火车一样击中了我。
csv[Col2] = csv[Col2].fillna(csv[Col4]])
这非常有效。而且我觉得我喜欢密切关注可能会更快地解决这个问题。谢谢大家的病人!
更新一个
我正在附加有关我的数据框的更多信息,以防将来对任何人有所帮助。
<class 'pandas.core.frame.DataFrame'>
Int64Index: 50000 entries, 0 to 49999
Data columns (total 6 columns):
Col 1 50000 non-null object
Col 2 4652 non-null object
Col 3 50000 non-null object
Col 4 45347 non-null object
Col 5 50000 non-null object
Col 6 50000 non-null object
dtypes: object(6)
memory usage: 1.5+ MB
None
【问题讨论】:
-
空格是空字符串还是
nan?你应该可以做到df['NEW'] = df[['Col2', 'Col4']].sum(axis=1) -
你能用空格替换所有空格吗:
df['Col2'] = df['Col2'].str.replace(' ','')并为 Col4 做同样的事情,然后我之前的评论应该可以工作 -
抱歉耽搁了。 @EdChum,我相信它们只是空白。如果我将数据框导出到 CSV,则单元格显示为空。如果我将其编入索引然后将其导出为 CSV,我将看到 NAN 值。话虽如此,我尝试了您的解决方案并最终得到“无法连接'str'和'int'对象”。我觉得这可能部分是我的错,因为我的例子只显示了字符串。当我试图用另一列填充空单元格时,我觉得实际数据并不重要。
-
你能发布有代表性的数据吗,因为现在是x y problem