-
2020-12-10 10:02:37
我知道这两个类似的问题:
我使用了一种不同的方法来替换值,我认为它应该是最干净的值.但它不起作用.我知道如何解决它,但我想理解为什么它不起作用:
In [108]: df=pd.DataFrame([[1, 2, 8],[3, 4, 8], [5, 1, 8]], columns=['A', 'B', 'C'])
In [109]: df
Out[109]:
A B C
0 1 2 8
1 3 4 8
2 5 1 8
In [110]: df.loc[:, ['A', 'B']].replace([1, 3, 2], [3, 6, 7], inplace=True)
In [111]: df
Out[111]:
A B C
0 1 2 8
1 3 4 8
2 5 1 8
In [112]: df.loc[:, 'A'].replace([1, 3, 2], [3, 6, 7], inplace=True)
In [113]: df
Out[113]:
A B C
0 3 2 8
1 6 4 8
2 5 1 8
如果我只在[112]中切割一列,则在[110]中切割多个列的工作方式不同.据我了解.loc方法,它返回一个视图而不是一个副本.在我的逻辑中,这意味着在切片上进行原位更改应该更改整个DataFrame.这就是在[110]行中发生的事情.
更多相关内容 -
Pandas中替换值的简单方法
2021-07-26 08:44:39使用内置的 Pandas 方法进行高级数据处理和字符串操作 Pandas 库被广泛用作数据处理和分析工具,用于从数据中清理和提取特征。... 当您想替换列中的每个值或只想编辑值的一部分时,这会派上用场。 如果您使用内置的 Pandas 方法进行高级数据处理和字符串操作
Pandas 库被广泛用作数据处理和分析工具,用于从数据中清理和提取特征。
在处理数据时,编辑或删除某些数据作为预处理步骤的一部分。 这可能涉及从现有列创建新列,或修改现有列以使它们适合更易于使用。 为此,Pandas 提供了多种方法,您可以使用这些方法来处理 DataFrame 中所有数据类型的列。
在这篇文章中,让我们具体看看在 DataFrame 中的列中替换值和子字符串。 当您想替换列中的每个值或只想编辑值的一部分时,这会派上用场。
如果您想继续,请在此处下载数据集并加载下面的代码。
import pandas as pd df = pd.read_csv('WordsByCharacter.csv')
使用“替换”来编辑 Pandas DataFrame 系列(列)中的字符串
Pandas 中的 replace 方法允许您在 DataFrame 中的指定系列中搜索值,以查找随后可以更改的值或子字符串。 首先,让我们快速看一下如何通过将“Of The”更改为“of the”来对表中的“Film”列进行简单更改。
# change "Of The" to "of the" - simple regex df["Film"].replace("Of The", "of the") # won't work if you do this df["Film"].replace("Of The", "of the", regex=True)
上面,我们所做的只是将我们正在寻找的子字符串作为第一个参数传递给 replace 方法,然后将我们想要替换的值作为第二个参数传递。 您会看到我们还必须传递 regex=True 才能使操作生效。 否则,replace 方法只会更改“Of The”的列值,因为它只会匹配整个值。
您可以通过匹配确切的字符串并提供您想要更改的整个值来完成我们上面所做的相同的事情,如下所示。
df["Film"].replace("The Fellowship Of The Ring", "The Fellowship of the Ring")
这种方法的问题在于您、必须逐案匹配值。 也就是说,需要传递想要更改的每个值,以及希望将其更改为什么值。 在某些情况下,使用查找和替换与定义的正则表达式匹配的所有内容可能更容易。
但是,在想要将不同的值更改为不同的替换值的情况下,不必多次调用 replace 方法。 相反,可以简单地传递一个字典,其中键是要搜索的列值,而值是要替换原始值的内容。 下面是一个简单的例子。
# you can do multiple replacements in within one call of the replace method by creating a mapping dictionary # very scalable woo replacement_mapping_dict = { "The Fellowship Of The Ring": "The Fellowship of the Ring", "The Return Of The King": "The Return of the King" } df["Film"].replace(replacement_mapping_dict)
之前,我们只是简单地传递 regex=True 以便我们可以匹配子字符串。 让我们更进一步,实际编写一些正则表达式来匹配。 让我们做一些数据清理,并在 replace 方法中使用正则表达式删除这些数据。
# remove number number colon from "Chapter" - bit more complex regex example # regex is just <= 3 repetitions of any numeric character (0-9) immediately followed by a colon and a space df["Chapter"].replace(r"\d{,3}: ", "", regex=True)
我们所做的只是传递 r"\d{,3}: " 来匹配三个或更少的数字字符后跟一个冒号和一个空格(这将捕获“01:”、“02:”、…、“100 : “, 等等)。 每当在列值中找到它时,它就会从字符串中删除,因为我们传递的第二个参数是一个空字符串。
或者,如果您不想每次调用 replace 方法时都传递 regex=True,则可以改为完成上述相同的结果,如下所示:
# alternate way of doing the same thing (instead of having to pass regex=True at the end) # if you had multiple things you want to replace you can put them all in a list regex_list = [r"\d{,3}: ", r"The "] df["Chapter"].replace(regex=regex_list, value="")
结果与之前相同,但有一些差异使此方法更加清晰。 首先,如果有多个想要匹配的正则表达式,可以在列表中定义它们,并将其作为关键字参数传递给 replace 方法。 然后,只需要显式传递另一个关键字参数值来定义想要的替换值。 这样如果有人查看的代码可能会很容易理解它的作用并对其进行扩展。
在清理数据时,这是一个相当常见的过程,所以我希望您发现这篇对 Pandas 替换方法的快速介绍对自己的工作有用。
祝你的数据之旅好运!
作者:Byron Dolon
-
Python pandas 替换指定数据
2021-03-16 14:36:26import pandas as pd import numpy as np df=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh","bj","sz","gz"],index=["one","two","three","four"]) df.iloc[0,1]=np.nan 二、替换指定数据(f一、构造dataframe
import pandas as pd import numpy as np df=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh","bj","sz","gz"],index=["one","two","three","four"]) df.iloc[0,1]=np.nan
二、替换指定数据(fillna、isin、replace)
1、用"sz"列的同行数据将"bj"列的空值替换掉
df["bj"].fillna(df["sz"],inplace=True)
2、在1的基础上,将"sz"列为2或者6的数据替换成-4
法一:直接替换df.loc[df["sz"].isin([2,6]),"sz"]=-4
法二:函数replace()替换df.replace({"sz":{2:-4,6:-4}},inplace=True)
三、替换函数replace()详解
原dataframe如下:
1、全局替换元素
1)替换单个元素df.replace(-4,0)#将所有的-4元素替换为0,返回dataframe
2)替换多个元素
法一:在字典中指定df.replace({-4:0,4:1})#将-4替换为0,4替换为1
法二:在列表中指定
df.replace([-4,4],[0,1])#将-4替换为0,4替换为1
其中法二在列表中指定的方式,如果多个元素替换为相同的值,会更方便。df.replace([-4,4],1)#将-4和4替换为1
2、通过指定条件替换元素df.replace({"bj":{5:10,9:50},"gz":{7:10}})#将"bj"列的5替换为10,9替换为50,将gz列的7替换为10
也可通过直接索引列的方式来替换指定列的元素df["bj"].replace({5:10,9:50})#将"bj"列的5替换为10,9替换为50
3、通过模糊条件替换指定元素
法一:通过字符串方法替换 str.replace()
df["bj"]=df["bj"].str.replace("北","南").fillna(df["bj"])#将"bj"列中的"北"字替换成"南"字,若无"北"值,则不替换
法二:通过正则匹配替换df.replace("(.*)北(.*)","南京",regex=True)#将"bj"列中的含有"北"字的元素替换成"南京"
最后,如果需要在原始数据上完成替换,可以通过设置参数inplace=True。
参考链接:
https://blog.csdn.net/qq_18351157/article/details/107141339 -
python pandas 如何替换某列的一个值
2020-09-20 09:37:35python pandas 如何替换某列的一个值?今天小编就为大家分享一篇python pandas 实现替换某列的一个值方法,具有很好的参考价值,希望对大家有所帮助 -
Pandas 多列替换Nan值
2022-02-24 10:58:28[5, 5, 5, np.nan, 5], 'data3': [5.01, 5.01, np.nan, 10.23, 5.01] }) print(df1) # 只能单列替换 # df1["data2"].fillna("100", inplace=True) # 多列替换 # df1[["data2", "data3"]] = df1[["data2", "data3"]]...第一种方法:一行代码搞定
def fillna_demo(): # 填充空值 df1 = pd.DataFrame({ '电梯编号': ['a', 'b', 'c', 'd', 'e'], 'key2': ['one', 'two', 'one', 'two', 'three'], '本月实缴金额': [2, 2, 2, 2, 2], 'data2': [5, 5, 5, np.nan, 5], 'data3': [5.01, 5.01, np.nan, 10.23, 5.01] }) print(df1) # 只能单列替换 # df1["data2"].fillna("100", inplace=True) # 多列替换 # df1[["data2", "data3"]] = df1[["data2", "data3"]].replace(np.nan, 0) df1[["data2", "data3"]] = df1[["data2", "data3"]].fillna(0) print(df1)
第二种方法:比较繁琐
fill_fields = ["S_LAST_UPDATETIME", "CJSJ", "GXSJ", "GSLDSJ", "ZFSJ", "QYBDRQ", "FXBGRQ", "BJSJ", "PDSJ", "YQTS"] for field in list(set(fill_fields).intersection(set(df.keys()))): df[field].fillna("1970-01-02 00:00:00", inplace=True)
第三种方法:全局替换
df.fillna('0', inplace=True)
-
pandas替换某一列的空值为特定的值
2020-04-22 10:46:22方法一:只能单个元素替换 b.loc[b['text_a'].isnull(), 'label'] = 0 方法二:一次性替换空值和非空值 b['label'] = b['text_a'].isna().map({True:0, False:1}) -
pandas替换指定数据为空值
2020-09-18 02:34:41当向数据库中插入数据时,字段 B 为int类型,其中包含非法字符 -,这里解决方式是替换为空值,在传入数据库的过程会自动由pandas的NaN转化为sql的null。 import pandas as pd import numpy as np df = pd.DataFrame... -
pandas修改特定的值
2021-07-13 16:07:48pandas修改特定的值 map、apply映射 map和apply都是用于映射的,map一般用于Series对象,而apply用于DataFrame对象。简答的讲,就是如果要对某一列数据进行映射,map和apply都可以;但是如果要对多列数据同时进行... -
Pandas 中缺失值NaN的判断, 删除 及 替换
2022-01-04 15:01:01缺失值NaN的替换(填充) fillna()4.1 用通用值统一替换4.2 为每列替换不同的值4.3 用每列的平均值,中位数,众数等替换4.4 替换为上一个或下一个值 当使用pandas读取csv文件时,如果元素为空,则将其视为缺失值NaN... -
pandas全局替换某一个值
2020-12-17 20:47:37pandas全局替换某一个值 import pandas as pd data = pd.read_csv('train.csv',encoding='big5') data = data.replace('NR', 0.0) 将NR替换为0 -
pandas根据条件替换某一列的值
2021-01-05 13:36:05test_df.loc[test_df['label'] == test_df['pred'], 'result'] = '预测正确' -
pandas loc函数 查看与修改特定值
2021-01-20 21:26:502.修改特定行中其他列的值 3.修改特定行的值 栗子: import numpy as np import pandas as pd df = pd.DataFrame(data = [['荔景','Kowloon'],['深井(荃灣)','New Territories'],['深井(屯門)','New ... -
Pandas将列值为数字的替换空值
2021-06-10 10:39:09def is_num(x): try: float(x) return '' except: return x -
python pandas 替换某列的一个值
2020-12-30 17:44:41{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、... -
Pandas数据处理--替换列中的值
2020-07-22 17:07:37Pandas之替换列中的值(数值,字符串) 数据集 #data import pandas as pd dict_data = {'id_card':[111,222,333,444,555,666,777,888],\ 'sex':['f','m','m','f','m','f','f','f'],\ 'BMI':[31,17.5,24.5,23,18.8... -
dataframe 按条件替换某一列中的值方法
2021-01-01 12:26:04import pandas as pd content = ['T', 'F'] * 10 data = pd.DataFrame(content, columns=['Y']) print(data) Y 0 T 1 F 2 T 3 F 4 T 5 F 6 T 7 F 8 T 9 F 10 T 11 F 12 T 13 F 14 T 15 F 16 T 17 F 18 T 19 F data.... -
Python Pandas缺失值处理
2022-04-19 12:35:08Python Pandas缺失值处理 在一些数据分析业务中,数据缺失是我们经常遇见的问题,缺失值会导致数据质量的下降,从而影响模型预测的准确性,这对于机器学习和数据挖掘影响尤为严重。因此妥善的处理缺失值能够使模型... -
pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换、替换具体...
2021-10-21 11:34:37pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换、替换具体数据列的相关值 目录 pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的... -
pandas小技巧之--值替换
2018-07-28 23:01:22今天就来讲讲在pandas中进行特定值替换。 首先数据格式如下: df = pd.DataFrame({"id": [25,53,15,47,52,54,45,9], "sex": list('mfmfmfmf'), 'score': [1.2, 2.3, 3.4, 4.5,6.4... -
python pandas 怎么替换某列的一个值?
2017-05-10 22:53:14摘要:本文主要是讲解怎么样替换某一列的一个值。 应用场景: 假如我们有以下的数据集: 我们想把里面不是pre的字符串全部换成Nonpre,我们要怎么做呢? 做法很简单。 df['col2']=df['col1'] df.loc[df['... -
Pandas中inf值替换
2019-11-18 11:03:16Pandas中inf值替换问题出现inf的原因解决办法参考文章 问题 今天使用Pandas从MySQL读取数据,在处理之后再写回到数据库时报了一个错误: sqlalchemy.exc.ProgrammingError: (MySQLdb._exceptions.Programming... -
Python数据分析-pandas-查找替换数据
2021-08-20 15:53:32使用isin()函数查看数据表是否包含单个值或多个值 import pandas as pd a = pd.read_excel('test.xlsx',sheet_name=0) print(a) print('--------------') b = a.isin(['计算机',5000]) print(b) 判断数据表的某一... -
pandas匹配特定值索引选取多行数据
2019-06-26 23:39:26Python Pandas:获取列匹配特定值的行的索引 Python中append和extend的区别 - 粗面鱼丸 - 博客园 Python数据分析库pandas ------ pandas 删除重复元素、用映射替换添加元素、重命名轴索引、离散化、异常值检测... -
pandas使用replace函数将dataframe中None值以及其他异常编码值(例如,9999)替换为np.nan
2022-01-27 16:31:01pandas使用replace函数将dataframe中None值以及其他异常编码值(例如,9999)替换为np.nan(replace None and outlier code values with np.nan) -
使用Pandas将inf, nan转化成特定的值
2020-09-18 06:41:56今天小编就为大家分享一篇使用Pandas将inf, nan转化成特定的值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
24_Pandas.DataFrame,Series元素值的替换(replace)
2020-07-05 17:03:1024_Pandas.DataFrame,Series元素值的替换(replace) 要替换pandas.DataFrame,pandas.Series元素的值,请使用replace()方法。 这里,将描述以下内容。 替换元素 一次替换多个不同的元素 在字典中指定 在列表中... -
Pandas替换及部分替换(replace)实现流程详解
2021-02-03 11:16:31源数据1、替换全部或者某一行replace的基本结构是:df.replace(to_replace, value) 前面是需要替换的值,后面是替换后的值。例如我们要将南岸改为城区:将南岸改为城区这样Python就会搜索整个DataFrame并将文档中... -
pandas使用replace函数将dataframe指定数据列中的特定字符串进行自定义替换(replace substring in ...
2022-01-26 18:14:13pandas使用replace函数将dataframe指定数据列中的特定字符串进行自定义替换(replace substring in dataframe column values)