Pandas:替换dataframe列中的列值

时间:2018-04-18 21:48:04

标签: python pandas numpy normalization

我对这个问题的目标是在每个列值中的每个字符之间插入一个逗号,这些字符已经过哈希处理并填充为19位数字。

下面的代码部分工作,但是通过尝试将f_comma函数应用于列值来弄乱数组值...感谢您的帮助!

我已从其他问题中获取了一些答案,并创建了以下代码: 使用此功能 -

ViroViewARCore

并打开一个tsv文件

def f_comma(p_string, n=1):
    p_string = str(p_string)
    return ','.join(p_string[i:i+n] for i in range(0, len(p_string), n))

我已经修改了另一个答案来执行以下操作 -

data = pd.read_csv('a1.tsv', sep = '\t',  dtype=object)

返回此数组

h = 1
try:
    while data.columns[h]:
        a = data.columns[h]
        data[a] = f_comma((abs(data[a].apply(hash))).astype(str).str.zfill(19))
        h += 1
except IndexError:
    pass

没有f_comma函数,数组看起来像 -

array([[ '0, , , , ,4,1,7,5,7,0,1,4,5,4,6,1,6,5,3,1,4,6,1,\n,N,a,m,e,:, ,d,a,t,e,,, ,d,t,y,p,e,:, ,o,b,j,e,c,t',
        '0, , , , ,6,2,9,1,6,7,0,8,4,2,8,2,9,1,0,9,5,9,4,\n,N,a,m,e,:, ,n,a,m,e,,, ,d,t,y,p,e,:, ,o,b,j,e,c,t']], dtype=object)

目标是这样的数组 -

array([['3556968867719847281', '3691880917405293133']], dtype=object)

1 个答案:

答案 0 :(得分:0)

您应该能够使用pandas字符串函数。 例如https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.join.html

df["my_column"].str.join(',')