Python 根据给定的条件创建Pandas数据框架列

Python 根据给定的条件创建Pandas数据框架列

在对数据进行操作时,可能会有这样的情况:我们想根据一些条件来添加一列。没有任何库函数可以直接实现这个任务,所以我们要看看有哪些方法可以实现这个目标。在这篇文章中,我们将看到如何在Python中基于一个给定的条件创建一个Pandas数据框架列。

根据一个条件创建Pandas数据框架列

问题:给定一个包含文化活动数据的数据框架,添加一个名为 “价格 “的列,该列包含基于某一天将进行的活动类型的某一天的门票价格。

创建一个数据框架

在这里,我们正在创建数据框架来解决给定的问题。

# importing pandas as pd
import pandas as pd
 
# Creating the dataframe
df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Music', 'Poetry', 'Music', 'Comedy', 'Poetry']})
 
# Print the dataframe
print(df)

输出:

Python 根据给定的条件创建Pandas数据框架列

使用列表理解法

我们可以使用Python的列表理解技术来实现这一任务。列表理解大多比其他方法快。
现在,我们将在数据框架中添加一个名为 “价格 “的新列。为了这个目的,我们将使用列表理解技术。如果’事件’是’音乐’,则将价格设置为1500,否则为800。

# Add a new column named 'Price'
df['Price'] = [1500 if x =='Music' else 800 for x in df['Event']]
 
# Print the DataFrame
print(df)

输出 :

Python 根据给定的条件创建Pandas数据框架列

正如我们在输出中看到的,我们已经成功地根据一些条件向数据框架添加了一个新列。

使用DataFrame.apply()函数

我们可以使用DataFrame.apply()函数来实现这个目标。在有些情况下,我们可能有两个以上的值,在这种情况下,我们可以使用一个字典将新的值映射到键上。当我们有更多的类别时,这确实提供了很大的灵活性,我们想为新添加的列分配不同的值。

现在我们将在数据框架中添加一个名为 “价格 “的新列。为此,我们将使用DataFrame.apply()函数来实现这一目标。如果 “事件 “是 “音乐”,则将价格设为1500,如果 “事件 “是 “喜剧”,则设为1200,如果 “事件 “是 “诗歌”,则设为800。

# Define a function to map the values
def set_value(row_number, assigned_value):
    return assigned_value[row_number]
 
# Create the dictionary
event_dictionary ={'Music' : 1500, 'Poetry' : 800, 'Comedy' : 1200}
 
# Add a new column named 'Price'
df['Price'] = df['Event'].apply(set_value, args =(event_dictionary, ))
 
# Print the DataFrame
print(df)

输出 :

Python 根据给定的条件创建Pandas数据框架列

正如我们在输出中看到的,我们已经成功地根据一些条件向数据框架添加了一个新列。

使用DataFrame.map()函数

我们可以使用DataFrame.map()函数来实现这个目标。这是一个非常直接的方法,我们使用一个字典来简单地根据键值映射到新添加的列。

现在我们将在数据框架中添加一个名为 “价格 “的新列。为此,我们将使用DataFrame.map()函数来实现这一目标。如果 “事件 “是 “音乐”,则将价格设置为1500,如果 “事件 “是 “喜剧”,则为1200,如果 “事件 “是 “诗歌”,则为800。

# Create the dictionary
event_dictionary ={'Music' : 1500, 'Poetry' : 800, 'Comedy' : 1200}
 
# Add a new column named 'Price'
df['Price'] = df['Event'].map(event_dictionary)
 
# Print the DataFrame
print(df)

输出 :

Python 根据给定的条件创建Pandas数据框架列

使用numpy.where()函数

我们可以使用numpy.where()函数来实现这个目标。这是一个非常直接的方法,我们使用where条件,根据条件简单地将数值映射到新添加的列。

现在,我们将在数据框架中添加一个名为 “价格 “的新列。如果’事件’是’音乐’,则将价格设为1500,其余的事件设为800。

# np.where(condition, value if condition
# is true, value if condition is false)
 
df['Price'] = np.where(df['Event']
                       =='Music', 1500,800 )
 
print(df)

输出:

Python 根据给定的条件创建Pandas数据框架列

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程