我需要使用包含数值的列合并两个熊猫数据帧。
例如,两个数据框可能类似于以下数据框:
数据框“ a”
a1 b1
0 "x" 13560
1 "y" 193309
2 "z" 38090
3 "k" 37212
数据框“ b”
a2 b2
0 "x" 13,56
1 "y" 193309
2 "z" 38,09
3 "k" 37212
我需要做的是将a与b1 / b2列上的b合并。
问题是,如您所见,数据帧b'的某些值有些不同。首先,b'的值不是整数而是字符串,而且,以0结尾的值是“四舍五入”的(13560-> 13,56)。
我试图做的是替换逗号,然后将其强制转换为int,但这是行不通的;更多详细信息,此过程不会添加缺少的零。
这是我尝试过的代码:
b['b2'] = b['b2'].str.replace(",", "")
b['b2'] = b['b2'].astype(np.int64) # np is numpy
我可以使用任何程序来解决此问题吗?
答案 0 :(得分:2)
我认为需要创建布尔掩码来指定哪些值必须为多个:
#or add parameter thousands=',' to read_csv like suggest @Inder
b['b2'] = b['b2'].str.replace(",", "", regex=True).astype(np.int64)
mask = b['b2'] < 10000
b['b2'] = np.where(mask, b['b2'] * 10, b['b2'])
print (b)
a2 b2
0 x 13560
1 y 193309
2 z 38090
3 k 37212
答案 1 :(得分:0)
首先使用apply
和lambda函数更正该列:
b.b2 = b.b2.apply(lambda x: int(x.replace(',','')) * 10 if ',' in x else int(x))