我有这样一个简单的数据框:
df = [ {'col1' : 'A', 'col2': 'B', 'col3': 'C', 'col4':'0'},
{'col1' : 'M', 'col2': '0', 'col3': 'M', 'col4':'0'},
{'col1' : 'B', 'col2': 'B', 'col3': '0', 'col4':'B'},
{'col1' : 'X', 'col2': '0', 'col3': 'Y', 'col4':'0'}
]
df = pd.DataFrame(df)
df = df[['col1', 'col2', 'col3', 'col4']]
df
看起来像这样:
| col1 | col2 | col3 | col4 |
|------|------|------|------|
| A | B | C | 0 |
| M | 0 | M | 0 |
| B | B | 0 | B |
| X | 0 | Y | 0 |
我只想在行之间用字符“ 0”替换重复的字符。归结为保留我们遇到的第一个重复值,如下所示:
| col1 | col2 | col3 | col4 |
|------|------|------|------|
| A | B | C | 0 |
| M | 0 | 0 | 0 |
| B | 0 | 0 | 0 |
| X | 0 | Y | 0 |
这看起来很简单,但是我被卡住了。任何朝着正确方向前进的人都会受到感激。
您可以使用该duplicated
方法返回一个布尔索引器,该索引器确定元素是否重复:
In [214]: pd.Series(['M', '0', 'M', '0']).duplicated()
Out[214]:
0 False
1 False
2 True
3 True
dtype: bool
然后,您可以通过在数据框的各行之间映射此掩码并使用where
其进行替换来创建掩码:
is_duplicate = df.apply(pd.Series.duplicated, axis=1)
df.where(~is_duplicate, 0)
col1 col2 col3 col4
0 A B C 0
1 M 0 0 0
2 B 0 0 0
3 X 0 Y 0
我有以下形式的数据帧: 我想替换几个字符串,但其中一些字符串之后会有相同的输出。所以现在我用的是: 这将导致预期的结果: 但是命令行变得有些混乱,有没有更聪明的方法来做到这一点?类似于: 如果我尝试,这个逻辑:正则表达式匹配两个单词中的一个
我有下表(df): 我想用empty_row替换dataframe中的NaNs。我该怎么做? 我怎么解决这个?
如何使用bash将字符串中的替换为? 例如: txt文件包含如下文本: 这必须转化为: 我试过了 但这不管用。 这是怎么回事?
例如,我想把'NAN'换成'dog'和'cat'。像从1-30'楠'应该换成'dog',从40-100'应该换成'cat'。我应该怎么做
问题内容: 我希望在python3中以有效的方式使用该功能。我拥有的代码可以完成任务,但是速度太慢,因为我正在处理大型数据集。因此,只要有折衷,我的工作重点就是效率而不是优雅。这是我想做的玩具: 这使 如我所愿,但是花费的时间太长了。最快的方法是什么? 编辑:这是比该问题更集中和明确的问题,其解决方案与此类似。 问题答案: 用于执行查找: 为了避免没有有效密钥的情况,您可以通过 您还可以使用回答有
我的数据帧 所有值都是字符串。同学们,我想用空格代替非空格。我知道 但是有没有一种(tidyverse风格的)更普遍的方式来做到这一点呢?大约 也就是说,我正在寻找一种可以很好地扩展的解决方案。 提前致谢。