python - python pandas中的迭代和条件
问题描述
shipportMD=pd.read_csv('shipportMD.csv')
for importName in shipportMD['importName'].unique():
if (len(shipportMD['ItemDecision']=='Accepted')>len(shipportMD['ItemDecision']=='Rejected')):
print (shipportMD['importName'])
我需要打印importName
值'Accepted'
多于'Rejected'
for的值ItemDecision
。
因此,例如:
进口名称:x,y,x,x
项目决定:拒绝、接受、拒绝、接受。
x
2 个被拒绝,1 个被接受。
解决方案
您可以使用pd.crosstab
,然后使用布尔掩码:
df = pd.DataFrame({'ID': [1, 1, 1, 1, 2, 2, 2, 2],
'Decision': ['Accepted', 'Rejected', 'Rejected', 'Rejected',
'Accepted', 'Accepted', 'Rejected', 'Accepted']})
df_ct = pd.crosstab(df['ID'], df['Decision'])
condition = df_ct['Accepted'] > df_ct['Rejected']
res = df_ct[condition].index
# Int64Index([2], dtype='int64', name='ID')
或者对交叉表结果执行您选择的计算:
print(df_ct)
Decision Accepted Rejected
ID
1 1 3
2 3 1
推荐阅读
- c# - 如何在 C# 中将 IFormFile 转换为 byte[]?
- c# - 在两个类之间传递信息,其中一个是 MonoBehavior
- python - discord.py - 要列出的字符串
- python - python代码拆分成多个嵌套列表
- postgresql - 创建和调用超过 100 个参数的函数
- php - PHP - 如何在 Windows-1252 中保存文件?
- c++ - 带有 Cuda 的 LibTorch(C++) 引发异常
- python - 在 matplotlib 中设置轴限制后删除查看历史记录
- html - Html Newsletter issue Outlook 2016 - 如何调试?
- angular - 防止 Ag-Grid 在数据(NgRx 存储)更改时重新渲染