【问题标题】:Using x.isdigit() for floats?使用 x.isdigit() 进行浮点数?
【发布时间】:2021-07-07 06:22:16
【问题描述】:

我希望我的代码计算数字列 X 中每个 Y 列值的总和

        reader = csv.reader(f)
        csv_l=list(reader)
        
rows = len(csv_l)-1
columns = len(csv_l[0]) 
without_header = csv_l[1:]   
        
number_list = [[int(x) if x.isdigit() else x for x in lst] for lst in without_header]
my_dict = {}

for d in number_list:
    if d[0] in my_dict.keys():
        my_dict[d[0]] += d[3]
    else:
        my_dict[d[0]] = d[3]

如果输入 CSV 列中的值是一个整数,它工作得非常好,但我发现如果该值是一个浮点数,isdigit() 会失败,它会将结果作为浮点数拼凑成字符串而不是一个补充。

我为此使用了 pandas,在这里它可以工作,但我希望它在“纯 python”中。

dataframe = pd.read_csv(filePath)
new_dataframe = dataframe.groupby('Column Y')['Column X'].sum().reset_index(name='Sum of Values')
return(new_dataframe)

【问题讨论】:

  • 你的意思是不使用任何库?
  • 如果我没记错的话,isdigit() 方法仅适用于字符串。不知道如何将它应用到浮点数并且不会弹出 AttributeErrors。

标签: python pandas csv aggregation


【解决方案1】:

这是否接近您想要实现的目标?

设置数据:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': np.random.choice(list('ABCD'), size=16), 
                   'Y': np.random.random(size=16)})
table = df.values

X 不使用pandas 的列分组,迭代填充dict

res = {}
for n, v in table:
    if n in res.keys():
        res[n] += v
    else:
        res[n] = v

【讨论】:

    【解决方案2】:

    也许您正在寻找类似这些方面的东西?

    reader = csv.reader(f)
    csv_l=list(reader)
            
    rows = len(csv_l)-1
    columns = len(csv_l[0]) 
    without_header = csv_l[1:]   
    
    def x_to_num(x):
        try:
            x = int(x)
        except Exception:
            pass
        return x
            
    number_list = [[x_to_num(x) for x in lst] for lst in without_header]
    my_dict = {}
    
    for d in number_list:
        if d[0] in my_dict.keys():
            my_dict[d[0]] += d[3]
        else:
            my_dict[d[0]] = d[3]
    

    如果x 是数字,则将x 转换为整数,否则,将x 保持原样。

    【讨论】:

      猜你喜欢
      • 2011-05-07
      • 2021-11-08
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多