Python 如何映射列';将值添加到新列
我是python新手,拥有如下数据集:Python 如何映射列';将值添加到新列,python,python-3.x,pandas,dataframe,csv,Python,Python 3.x,Pandas,Dataframe,Csv,我是python新手,拥有如下数据集: package_name,name,starttime,duration com.instagram.android,Instagram,2020-10-19 21:18:57.527,0.116 com.instagram.android,Instagram,2020-10-19 21:26:42.613,3.945 com.facebook.katana,Facebook,2020-10-19 21:26:45.050,1.277 ,sudoku
package_name,name,starttime,duration
com.instagram.android,Instagram,2020-10-19 21:18:57.527,0.116
com.instagram.android,Instagram,2020-10-19 21:26:42.613,3.945
com.facebook.katana,Facebook,2020-10-19 21:26:45.050,1.277
,sudoku,2020-10-30 20:20:45.050,25.277
我正在尝试添加包含应用程序类别的列。例如:Facebook和Instagram='communication',数独='games'
如何在非常大的数据集上实现这一点?基本上,您需要将列的值映射到查找表。为此,pandas.Series.map()
函数非常有用
步骤:
- 创建一个查找表(或特定的
)dict
- 将数据读入一个
pandas.DataFrame
- 调用要映射的键列上的
函数map
- 将输出分配给新列
import pandas as pd
# Create a lookup table (dict).
lookup = {'instagram': 'communication',
'facebook': 'communication',
'sudoku': 'games'}
# Use DataFrame in OP's question.
df = pd.read_clipboard(sep=',')
# Alternatively, the dataset can be read data from a CSV file.
# df = pd.read_csv('/path/to/file.csv', sep=',')
# Map the values from `name` column (lower cased) to the category.
df['category'] = df['name'].str.lower().map(lookup)
输出:
package_name name starttime duration \
0 com.instagram.android Instagram 2020-10-19 21:18:57.527 0.116
1 com.instagram.android Instagram 2020-10-19 21:26:42.613 3.945
2 com.facebook.katana Facebook 2020-10-19 21:26:45.050 1.277
3 NaN sudoku 2020-10-30 20:20:45.050 25.277
category
0 communication
1 communication
2 communication
3 games
谢谢你的回复。我如何找到不同类别的应用程序?很荣幸,希望对您有所帮助。由于应用程序类别逻辑是“任意的”-这将是用户(您)定义的
dict
。只需将任何新的应用程序和类别添加到查找
字典中,即可完成设置!(将删除此评论)。如果答案有帮助,请单击答案旁边的勾号将其显示为已接受。这是一个标准的练习,谢谢!