将主列表与CSV行中的单个列表进行比较 -- python 领域 和 pandas 领域 和 string 领域 和 list 领域 和 dataframe 领域 相关 的问题

Comparing Master List to Individual lists in a CSV row


2
vote

问题

中文

我正在尝试自动化我的教室,我正在击中墙壁,将我的总学生列表与课程和学生的DataFrame进行比较。最终,代码将返回全类类列表。

首先,我的学生总计列表称为 all_kids

  all_kids=['Kevin', 'Jack', 'Caroline', 'Grace', 'Harry', 'Sam'] df_kids=pd.DataFrame(all_kids)   

然后,我的类信息位于CSV文件中,其中一个列是类时段,一列是该类中的学生

name 孩子
英文 Kevin,Jack,Sam,Richard
math Caroline,Kevin,Harry,Grace

有没有办法将我的总孩子名单与每个班级的孩子们比较并返回这样的东西:

name 孩子 状态
英文 Kevin,Jack,Sam,Richard 不满
math Caroline,Kevin,Harry,Grace full。

这里,数学是满的,因为这四个孩子都出现在 all_kids 中,但英语不满,因为理查德不包括在 all_kids 中。

谢谢!

英文原文

I am trying to automate my classroom, and I'm hitting a wall with comparing my total list of students to a dataframe that has classes and students. Ultimately, the code would return a list of full classes.

First, my total students list is called all_kids.

all_kids=['Kevin', 'Jack', 'Caroline', 'Grace', 'Harry', 'Sam'] df_kids=pd.DataFrame(all_kids) 

Then, my class info is in a CSV file, where one column is the class period and one column is the students in that class

Name Kids
English Kevin, Jack, Sam, Richard
Math Caroline, Kevin, Harry, Grace

Is there a way to compare my total list of kids to the kids in each class and return something like this:

Name Kids Status
English Kevin, Jack, Sam, Richard Not Full
Math Caroline, Kevin, Harry, Grace Full.

Here, Math is full because those four kids all appear in all_kids, but English is not full because Richard is not included in all_kids.

Thanks!

              

回答列表

1
 
vote
vote
最佳答案
 

您可以使用 <代码> str.split 带 expand=True 拆分 Kids 列中的字符串然后使用 .isin + .all 创建一个布尔掩码然后使用使用 np.where 选择相应的 Status

  m = df_class['Kids'].str.split(r', ', expand=True).isin(all_kids).all(1) df_class['Status'] = np.where(m, 'Full', 'Not Full')   
或者,您可以 99887668 Kids 列中的字符串,然后在列表识别中检查 expand=True0 使用 expand=True1
  expand=True2  

  expand=True3  
 

You can use str.split with expand=True to split the strings in the Kids column then use .isin + .all to create a boolean mask which is then used with np.where to select the corresponding Status:

m = df_class['Kids'].str.split(r', ', expand=True).isin(all_kids).all(1) df_class['Status'] = np.where(m, 'Full', 'Not Full') 

Alternatively you can split the strings in the Kids column, then inside a list comprehension check for set membership using set.issubset:

m = [set(k.split(', ')).issubset(all_kids) for k in df_class['Kids']] df_class['Status'] = np.where(m, 'Full', 'Not Full') 

      Name                           Kids    Status 0  English      Kevin, Jack, Sam, Richard  Not Full 1     Math  Caroline, Kevin, Harry, Grace      Full 
 
 
0
 
vote

您需要做的是检查"儿童变量" 中存在的每个名称是否存在于All_kid中。在逻辑中,它意味着从 expand=True5 的每一行中排除 expand=True4 ,并观察它是否为空。 当然,您首先需要将 expand=True6 str列拆分为列表的列:

此代码为我工作:

  expand=True7  
  expand=True8  
 

What you need to do is checking if every name present in the 'Kids' variable is present in all_kids. In logics, it means to exclude all_kids from each line of Kids and watch if it is empty or not. Of course, you first need to split you Kids str column to a column of lists :

This code worked for me :

 import numpy as np import pandas as pd   all_kids=['Kevin', 'Jack', 'Caroline', 'Grace', 'Harry', 'Sam'] df_kids=pd.DataFrame(all_kids)   df = pd.DataFrame(None, columns =  ['Name', 'Kids']) df.loc[0] = ['English', 'Kevin, Jack, Sam, Richard'] df.loc[1] = ['Math', 'Caroline, Kevin, Harry, Grace']  df['list'] = df['Kids'].apply(lambda s : s.split(', ')) df['diff'] = df['list'].apply(lambda s : [elt for elt in s if elt not in all_kids]).apply(len) df['Status'] = np.where(df['diff'] == 0, 'Full', 'Not Full') 
      Name                           Kids  ... diff    Status 0  English      Kevin, Jack, Sam, Richard  ...    1  Not Full 1     Math  Caroline, Kevin, Harry, Grace  ...    0      Full 
 
 

相关问题

0  从HTML元素下载图像  ( Download image from html element ) 
我需要下载包含图像的SRC文件。我们可以在下一个选项卡上复制源并粘贴它,以便我们可以下载图像。但是我需要下载图像递归i.e 1000图像。此外,我正在使用的网站包含CAPTCHA的登录。是否有任何方法可以通过dev控制台或任何可能的方式 ...

0  将一个3D坐标系旋转到另一个  ( Rotate one 3d coordinate system to another ) 
我在一个坐标系中有一组点,我想将它们旋转到Python中的另一个坐标系。基于此答案我写下以下python函数: def change_of_basis(points, initial, final): ''' rotate points/vectors in a 3D coordinate sys...

5  Python中的群集计算快速JSON序列化(和与泡块的比较)?  ( Fast json serialization and comparison with pickle for cluster computing in py ) 
我有一组数据点,每个数据点由字典描述。每个数据点的处理是独立的,我将每个数据作为单独作业提交给群集。每个数据点都有一个唯一的名称,我的群集提交包装器只需调用脚本,该脚本采用数据点的名称和描述所有数据点的文件。然后,该脚本从文件中访问数据点并执行计算。 由于每个作业必须加载所有点的集合,只能检索要运行的点,我想通过序列...

0  KIVY - 如何将滚动视图拖放到另一个布局的项目?  ( Kivy how to drag and drop items from scrollview to another layout ) 
我试图拖动排列在GridLayout(确实在滚动视图内)的一些图像到外布局。 要拖动的图像具有其 on_touch_down 事件定义,当单击映像时,父父级将从 WidgetMenu 更改为 MainLayout 所以它可以是拖动在这些小部件之间。当前问题是当我触摸图像时,拖船丢失了。 完整代码: import...

0  使用多处理嵌套并行进程  ( Nesting parallel processes using multiprocessing ) 
是否有一种方法在已经并行化的函数中并行运行函数?我知道使用multiprocessing.pool()这是不可能作为守护进程无法创建子进程。我相当新的并行计算,并努力找到解决方法。 我目前有几千个计算,需要使用其他一些商业上可用的量子机械码I接口并行运行。每个计算,有三个后续计算,需要在父计算的正常终止时并行执行,如...

0  int函数及其参数  ( The int function and its parameters ) 
我正在研究这个系列问题。 我不了解问题11,使用 int() 的方式。我理解,将 x 直接转换为 int 导致一些零的丢失,所以这样做是不可能的,但我不理解什么 intp = int(p,2) 假设要做。打印出 intp 我得到以下值 4,3,10,9 。如何与 0100,0011,1010,1001 相...

0  将通用路径设置为Python中的文件(没有循环)  ( Setting universal path to file in python without for loop ) 
我正在尝试设置我的工作目录,以便它将在所有机器上是通用的 - 但没有循环。我正在使用以下代码,基于此线程:在目录中查找特定路径在Python import os try: ...

0  服务兼容性意外退出。状态代码是:-9  ( Service chromedriver unexpectedly exited status code was 9 ) 
我对 9988876612 进行了诸多问题,用于使用solemiumings。 $http.get()3 已安装并将其放在与Python文件相同的文件夹中。似乎加载jupyter小区几秒钟的所有建议都被拒绝了以下消息: $http.get()4 其中我使用 $http.get()5 下载它们。在这里我的代码: ...

1  如何用两组重新表达URL?  ( How to regex url with two groups ) 
我收到这个网址: private void playSound(String location) { try { Uri mp3 = Uri.parse("android.resource://" + getPackageName() + "/raw/" + l...

2  rq工作人员扔“valueerror”  ( Rq worker throwing valueerror ) 
我试图在我的烧瓶申请上获取RQ / RQ工作者。我试图将其缩至一个非常简单的测试用例。这是一般的想法: 用户访问 /test 页面。触发要排队的作业并返回排队作业的 job_key 工人( worker.py )处理排队的作业。 用户可以访问 /retrieve/<job_key> 页面来检索结果。 [这未显示...

0  腌制物体的大小wrt gae blobproperty  ( Size of pickled object wrt gae blobproperty ) 
我正在挑痒一个python dictonary,并将它存储到gae blobproperty。 blobproperty有一个 1mb大小限制。我想以编程方式检查我的对象将在1MB限制中'fit'。 var_dump($ECB_rates); 5 但是len(pickled_object)测量是什么? (字符...

9  在Python中线性拟合,在x和y坐标中具有不确定性[关闭]  ( Linear fitting in python with uncertainty in both x and y coordinates ) 
关闭。这个问题不符合堆栈溢出指南。它目前不接受答案。 想要改进这个问题?更新问题,所以它是关于堆栈溢出的主题。 closed 1年前。 ...

0  使用Pandas将对象(数值)转换为DateTime  ( Convert object numeric value to datetime using pandas ) 
我的数据具有时间表,如下所示,如何将其转换为使用Pandas 的日期和时间 ...

0  Boketh Plot隐藏HTML网站并仅在Jupyter中显示输出?  ( Boketh plot hide html site and show output only in jupyter ) 
使用散景包,我创建了一个图形可视化,并使用 WaitForMultipleObjects(...)2 输出显示在jupyter中,但也同时使用输出打开浏览器中的新选项卡。我只想将它绘制在Jupyter单元格中,而不将绘图打开作为新的HTML文件。这是不可分割的吗? WaitForMultipleObjects(....

1  根据条件平等查找DataFrame中的匹配对或链条  ( Find matching pairs or chains of persons in dataframe based on equality of cond ) 
我是Python的初学者 - 首先我想为我相当长的问题而道歉,我写的可能非常丑陋的程序来解决我的"问题" 。 问题如下:想象一下房屋的交换。人们可以互相交换他们的房子。 1人从"A" 想要去"B" ,从"B" 的人2想要去"A" 。然后实现了匹配或易货物,并且两者都不再可用于进一步匹配。此外,应涵盖案例,该人1希望从...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.