Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 选择数据帧后给出数字_Python_Json_Pandas_List_Dataframe - Fatal编程技术网

Python 选择数据帧后给出数字

Python 选择数据帧后给出数字,python,json,pandas,list,dataframe,Python,Json,Pandas,List,Dataframe,你好,我有一张这样的桌子 Name Subject Score AA Math 30 AA English 40 AA CS 60 BB Math 40 BB English 55 BB CS 55 CC Math 89 CC English 75 CC CS 55 在选择了名称和主题后,我需要为筛选表提供编号 例如名称:AA BB,主题:数学英语

你好,我有一张这样的桌子

 Name  Subject Score 
 AA     Math    30
 AA   English   40
 AA     CS      60
 BB     Math    40
 BB   English   55 
 BB     CS      55 
 CC     Math    89
 CC   English   75
 CC     CS      55
在选择了名称和主题后,我需要为筛选表提供编号 例如名称:AA BB,主题:数学英语。使用该表使其变为

 Name  Subject Score 
 AA     Math    30
 AA   English   40
 BB     Math    40
 BB   English   55 
 Name  Subject Score 
 BB     English 55
 BB     CS      55
 CC     Math    75
 CC     CS      55
现在,我需要创建一个数字列表,以便为Web应用程序提供一个JSON,我的团队需要这样的格式

[[0,0,50],[0,1,40],[1,0,40],[1,1,50]]
列表中的第一个变量是name的id,第二个变量是subject的id,第三个变量是score

在另一种情况下,当选择名称:BB CC和主题:English CS时。使用该表使其变为

 Name  Subject Score 
 AA     Math    30
 AA   English   40
 BB     Math    40
 BB   English   55 
 Name  Subject Score 
 BB     English 55
 BB     CS      55
 CC     Math    75
 CC     CS      55
在这段时间里,我需要再次给出0中的数字,以创建一个新的JSON到web应用程序。桌子似的

[[0,0,55],[0,1,55],[1,0,75],[1,1,55]]
我如何才能做到这一点,并使JSON始终更新ID号

import pandas as pd

df = pd.DataFrame({'Name': {0: 'BB', 1: 'BB', 2: 'CC', 3: 'CC'},
 'Subject': {0: 'English', 1: 'CS', 2: 'Math', 3: 'CS'},
 'Score': {0: 55, 1: 55, 2: 75, 3: 55}})


df['nid'] = df['Name'].astype('category').cat.codes
df['sid'] =  df.groupby(['Name']).cumcount()

df[['nid','sid','Score']].values.tolist()
输出

[[0, 0, 55], [0, 1, 55], [1, 0, 75], [1, 1, 55]]
输出

[[0, 0, 55], [0, 1, 55], [1, 0, 75], [1, 1, 55]]

这里有一些简单的方法:

data = pandas.DataFrame(table) #your table/data

def my_func(Name):
    #use the set data type to remove duplicates
    names_set = set(data['name'])
    id_number = list(names_set).index(Name) #get the index of the specified name
    return id_number

这里有一些简单的方法:

data = pandas.DataFrame(table) #your table/data

def my_func(Name):
    #use the set data type to remove duplicates
    names_set = set(data['name'])
    id_number = list(names_set).index(Name) #get the index of the specified name
    return id_number

非常感谢。你能告诉我函数my_func中的名字是什么吗这里,“Name”是根据你的表格中的人名,例如:AA、BB、CC。如果您还没有理解,请告诉我。:)非常感谢。你能告诉我函数my_func中的名字是什么吗这里,“Name”是根据你的表格中的人名,例如:AA、BB、CC。如果您还没有理解,请告诉我。:)