python - 如何根据另一列的值将熊猫数据框的某些行添加到列表中
问题描述
我有一个 csv 文件,其中一列标记为“计数”,然后是 10 列,标记为 1-10。总共有 100 行。对于十列中的每一列,我想将该列中的所有值添加到列表中,其中“计数”值在 100-400 之间。这将产生 10 个列表。我附上了数据的样例,以及我拥有的一些代码。谢谢
本质上,对于每一列,我想要该行的“计数”值在 100-400 之间的所有值的列表。我想将所有列表保存在字典中,将列标题映射到所需间隔内的所有值的列表。
到目前为止,我有:
import pandas as pd
dict ={}
data = pd.read_csv('Data.csv')
headers = data.columns.values
headers = headers[1:]
count = 1
for header in headers:
for index, row in data.iterrows():
dict[str(count)] = []
if 100<=data.loc[index, 'count'] <= 400:
dict[str(count)].append(data.loc[index, header])
count+=1
但这似乎在 jupyter notebook 中崩溃了。谢谢!
解决方案
从概念上讲,您快到了,但您可能只是希望内置pandas
函数来帮助您执行此操作:to_dict
.
# Get the data which falls into the range of interest
range_data = data[(100<=data['count'])&(data['count']<=400)]
# Convert column names to strings (rather than numbers)
range_data.columns = range_data.columns.astype(str)
# Convert to a dictionary
value_dict = range_data.drop(columns=['counts']).to_dict(orient='list')```
范围比较
您将无法在 python 中执行此操作:
100<=data.loc[index, 'count'] <= 400
您需要将每个比较分开,如下所示:
100<=data.loc[index, 'count'] and data.loc[index, 'count'] <= 400
命名
给你的字典命名是个坏主意dict
。这将用您的字典覆盖基本功能dict
,因此您将无法再调用dict
创建新字典。此外,它可能会很混乱。
推荐阅读
- api - Google Map API 能否在驾驶时不断在地图上显示行驶路径
- python - 确定列表的索引(zip)
- amazon-cognito - AWS Cognito 用于多个/n 个域
- spring - 如何在 Spring 的服务调用中获取 Mono QS 参数值
- python - 熊猫标记行适合条件
- visual-c++ - MFC编辑框修改连
- javascript - TypeError:无法读取 reactJS 上未定义的属性“地图”
- batch-file - 在批处理文件中等待 5 到 30 秒的随机时间
- javascript - 在前端显示 Freshchat Smart Plugs 脚本结果
- javascript - 为什么撤消变量没有更新?