在Pandas中用另一个DataFrame的值替换一个DataFrame的值
在这篇文章中,我们将学习如何使用pandas将一个DataFrame的值替换成另一个DataFrame的值。
它可以使用DataFrame.replace()方法来完成。它被用来替换DataFrame中的regex、字符串、列表、系列、数字、字典等,DataFrame方法的值被动态地替换成另一个值。这是一个非常丰富的函数,因为它有许多方法。本教程解释了如何在实践中使用这些方法的不同例子。
语法: DataFrame.replace( old value, new value)
参数:
- old value: 这是要被替换的旧子串。
- new value: 这是新的子串,它将取代旧的子串。
示例
在这里,我们将创建一些数据,我们将在进一步的例子中使用。
import pandas as pd
# initialise data of lists.
colors = {'first_set': ['99', '88', '77', '66',
'55', '44', '33', '22'],
'second_set': ['1', '2', '3', '4', '5',
'6', '7', '8']
}
color = {'first_set': ['a', 'b', 'c', 'd', 'e',
'f', 'g', 'h'],
'second_set': ['VI', 'IN', 'BL', 'GR',
'YE', 'OR', 'RE', 'WI']
}
# Calling DataFrame constructor on list
df = pd.DataFrame(colors, columns=['first_set', 'second_set'])
df1 = pd.DataFrame(color, columns=['first_set', 'second_set'])
# Display the Output
display(df)
display(df1)
输出:

例子1:用一个DataFrame的first_set的 “88 “值替换 “e “值。
# selecting old value
a = df1['first_set'][4]
# selecting new value
b = df['first_set'][1]
# replace values of one DataFrame
# with the value of another DataFrame
df1 = df1.replace(a,b)
# Display the Output
display(df1)
输出:

例子2:用first_setof一个DataFrame的 “b “值替换 “55 “值。
# Display the Output
display(df)
display(df1)
# Selecting old value
a = df['first_set'][4]
# Selecting new value
b = df1['first_set'][1]
# replace values of one DataFrame with
# the value of another DataFrame
df = df.replace(a,b)
# Display the Output
display(df)
输出:

例子3:现在让我们在数据框架的’first_set’列下用’Hello’值替换’55’值,在’second_set’列下用’Geeks’值替换’VI’值。
#selected value
a = df['first_set'][4]
b = df1['second_set'][1]
# replace values of one DataFrame with
# the value of another DataFrame
df = df.replace(a,'Hello')
# replace values of one DataFrame with
# the value of another DataFrame
df1 = df1.replace(b,'Geeks')
display (df)
display(df1)
输出:

例子4:现在让我们用另一个DataFrame的列来替换一个DataFrame的整列。
# replace column of one DataFrame with
# the column of another DataFrame
df['second_set'] = df1.replace(df['first_set'],df['second_set'])
display(df)
输出:

例子5:这里,df1.first_set[df1.first_set == ’66’] = ‘DF1’意味着首先我们在df1的first_set中找到’66’,之后我们在同一位置用’DF1’替换该值(’66’)。
# replacing value of DataFrame
df1.first_set[df1.first_set == '66'] = 'DF1'
df2.first_set[df2.first_set == 'g'] = 'DF2'
# display updated table
display(df1)
display(df2)
输出:

例子6:在这个例子中,我们创建了另一个数据框 “df2 “和 “df3 “来替代 “df1 “的值。在这里,”df2″”df3 “的值将被传递到更新方法中,然后它将找到存在于 “df1 “中的匹配实体,找到后它将用 “df2″”df3 “的值更新。Pandas df.update()函数可以更新给定系列对象中的索引值。
语法: df.update(other)
Parameter :
- other: series
import pandas as pd
# Creating dataframe
df1 = pd.DataFrame([["rumul", 10, 12, 10],
["rahul", 10, 11, 16],
["purvi", 18, 14, 10],
["ravi", 20, 13, 30]],
columns=["Name1", "Maths",
"Physics",
"Chemistry"])
# setting name1 as index column
df1 = df1.set_index('Name1')
display(df1)
# Creating another dataframe for
# replacement
df2 = pd.DataFrame(
[["rahul", 1, 1]],
columns=["Name2", "Maths", "Physics"])
df3 = pd.DataFrame(
[["purvi", 5, 8]],
columns=["Name3", "Maths", "Chemistry"])
# setting name2 and name3 as
# index column
df2 = df2.set_index('Name2')
df3 = df3.set_index('Name3')
# update the values at the
# passed index
df1.update(df2)
df1.update(df3)
display(df1)
输出:

例子7:使用isin方法来过滤df并分配所需的行值。这里我们选择了普通的’Name’来过滤数据帧(df1)和数据帧(df2)中的数据,之后我们用’df2’的值替换它。例如,rumul’mark被替换为5到18分,rahul’mark被替换为20到19分,等等。Pandas isin()方法被用来过滤数据框架。这个方法有助于选择在特定列中具有特定值的行。
语法: DataFrame.isin(values)
参数:
- values: iterable, Series, List, Tuple, DataFrame 或 dictionary。
import pandas as pd
# Creating dataframe
df1 = pd.DataFrame({'Name': ['rumul', 'rahul',
'ravi', 'imran'],
'Marks': [5, 20, 8, 12]})
df2 = pd.DataFrame({'Name': ['rumul', 'rahul',
'purvi', 'ravi',
'imran'],
'Marks': [18, 19, 13, 11, 15]})
display(df1)
display(df2)
# replace values of one DataFrame with
# the value of another DataFrame
df1['Marks'] = df2[df2['Name'].isin(df1['Name'])]['Marks'].values
display(df1)
输出:

极客教程