我有一个数据帧如下:
A B C
a d '1.1'
a d ' 2 '
a e '1'
a e ' 3 '
c f '3.2 '
我需要的是将列C中的值求和,同时将它们与A和B分组。但是,这些值是字符串而不是浮点数,有些值有空格,有些没有空格。在
我需要数据帧这样结束:
^{pr2}$我想做的是:
df.groupby(['A','B']).sum()
然而,由于它们是字符串,它只是将它们合并在一起,而不是实际求和。后来,我试着把它们转换成float,但由于空间的关系,它不允许我使用。最后,我试图删除字符串,但它说它不能操作某些元素,因为它们是int(??)。我猜后者是因为它没有空间。在
注意:为了更好地理解,这些值加上了“+”,但是我需要的结果是3.1、4和3.2
我的显式csv如下:
DL_INSTITUCION,PERIODO_QUE_SE_REPORTA, RESPONSABILIDAD_TOTAL
Santander,201412,"92,467"
Banca Mifel,201412," 39,089 "
Banca Mifel,201412," 28,286 "
Banca Mifel,201412," 310,902 "
CIBanco,201412," 10,106 "
CIBanco,201412," 46,872 "
Banorte/Ixe,201412," 3,127,120 "
CIBanco,201412," 10,163 "
Santander,201412," 545,027 "
Banca Mifel,201412," 10,291 "
Banca Mifel,201412," 80,738 "
Banca Mifel,201412," 46,329 "
HSBC,201412," 583,274 "
CIBanco,201412," 24,094 "
但是有2800万排。在
编辑:首先替换C列中的逗号
我将最后一行的值改为'1994102'。你得到了
^{pr2}$根据您的目标:
或者计算总数:
^{pr2}$简单使用
pd.to_numeric
此解决方案的优点是使用
pd.to_numeric
这是因为
pd.to_numeric
如果向pd.Series
对象传递了一个pd.Series
对象,则返回一个带有索引的pd.Series
对象。这为我们提供了方便,可以方便地通过管道将结果发送到groupby
。在
^{pr2}$errors='coerce'
另外一个好处是,如果我们需要处理不能解析为
float
的字符串,我们可以使用参数errors='coerce'
。这将强制不可解析的字符串np.nan
,并且仍然允许有用的聚合。在处理逗号
设置
您可以用
pd.read_csv
来解决这些问题中的许多现在您将注意到
dtypes
被正确地推断出来了我们可以毫无争议地进行聚合。在
相关问题 更多 >
编程相关推荐