簡體   English   中英

熊貓:替換數據框列中的列值

[英]Pandas: Replacing column values in dataframe columns

我對這個問題的目標是在每個列值的每個字符之間插入一個逗號,這些值已被哈希處理並填充為19位數字的長度。

下面的代碼部分起作用,但是試圖將f_comma函數應用於列值會弄亂數組值……感謝您的幫助!

我從其他問題中得到了一些答案,並創建了以下代碼:使用此功能-

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))

並打開一個tsv文件

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

返回此數組

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)

沒有f_comma函數的數組看起來像-

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

目標是這樣的數組-

array([['3,5,5,6,9,6,8,8,6,7,7,1,9,8,4,7,2,8,1', '3,6,9,1,8,8,0,9,1,7,4,0,5,2,9,3,1,3,3']], dtype=object)

您應該能夠使用pandas字符串函數。 例如https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.join.html

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM