我试图优化代码时,为了获得一个表与数据读取CSV文件的Pandas 工作.

这段代码运行正常,但相当麻烦:

pd_table = pd.DataFrame(个个

    {
     10: [sheet['B' + str(item)].value for item in range(1,29) if sheet['A' + str(item)].value == 10],
     20: [sheet['B' + str(item)].value for item in range(1,29) if sheet['A' + str(item)].value == 20],
     30: [sheet['B' + str(item)].value for item in range(1,29) if sheet['A' + str(item)].value == 30],
     40: [sheet['B' + str(item)].value for item in range(1,29) if sheet['A' + str(item)].value == 40],
     50: [sheet['B' + str(item)].value for item in range(1,29) if sheet['A' + str(item)].value == 50],
     60: [sheet['B' + str(item)].value for item in range(1,29) if sheet['A' + str(item)].value == 60],
     70: [sheet['B' + str(item)].value for item in range(1,29) if sheet['A' + str(item)].value == 70]
      }

结果是一个包含数据的表

我将此代码简化为以下代码:

values= [10, 20, 30, 40, 50, 60, 70]

pd_table = pd.DataFrame(个个

dict(zip(values, [[sheet['B' + str(item)].value for item in range(6,29) if sheet['A' + str(item)].value == 10]]*len(values))), index = ['10.08', '20.08', '30.08']

)

你能告诉我如何更换建筑中的10号吗? ...sheet['A' + str(item)].value == 10... 个 使用"N",它将迭代列表"Values"中序列10、20...70中的数字?

如果我使用sheet['A' + str(item)].value == i for i in values,则会得到一个错误: local variable 'i' referenced before assignment

推荐答案

你不能用字典理解吗?

pd_table = pd.DataFrame(
  {val: [sheet['B' + str(item)].value for item in range(1,29)
         if sheet['A' + str(item)].value == val]
  for val in values},
  index = ['10.08', '20.08', '30.08']
)

根据sheet的性质,可能进一步简化这种逻辑.

Python相关问答推荐

比较2 PD.数组的令人惊讶的结果

如何制作10,000年及以后的日期时间对象?

如何在solve()之后获得症状上的等式的值

如何使用pytest来查看Python中是否存在class attribution属性?

使用密钥字典重新配置嵌套字典密钥名

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

如何在Python中找到线性依赖mod 2

如何在turtle中不使用write()来绘制填充字母(例如OEG)

如何使用SentenceTransformers创建矢量嵌入?

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

Geopandas未返回正确的缓冲区(单位:米)

Matplotlib中的字体权重

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

如何根据rame中的列值分别分组值

freq = inject在pandas中做了什么?''它与freq = D有什么不同?''

在Django中重命名我的表后,旧表中的项目不会被移动或删除

当输入是字典时,`pandas. concat`如何工作?

如何在表单中添加管理员风格的输入(PDF)

如何在不遇到IndexError的情况下将基数10的整数转换为基数80?

将参数从另一个python脚本中传递给main(argv