2016-09-20 75 views
-3

我有一個數據框的coloumns輸入爲12345,並且想要輸出爲excel表爲1XXX5如何執行此操作。在數據幀coloumn的數據類型爲整數pandas中的掩碼數

df=pd.read_excel('INVAMF.xls',sheetname=4,header=0,skiprows=0) 
#df created 

print df.dtypes 
print np.count_nonzero(pd.value_counts(df['ACCOUNT_NUMBER'].values)) 

s = (df['ACCOUNT_NUMBER']) 

print s 
s = s.astype(str) 

s.apply(lambda x: x[0] + 'X' * (len(x) - 2) + x[-1]) 

print s 

0  32642 
1  32643 
2  32644 
3  32677 
4  32680 
5  32680 
6  32688 
7  32688 
8  32695 
9  32708 
10  32708 
11  32709 
12  32710 
13  32734 
14  32734 
15  32738 
16  32738 
17  6109 
18  6109 
  1. List item
+0

你能後的原始數據,你的代碼和所需的輸出爲你的問題有點 – EdChum

+0

不清楚,我不能,因爲它是對工作的敏感我在做什麼..但將詳細闡述。把它當作你電話號碼的數字整數,我需要隱藏數據表中的數據用於報告目的。所以我的輸出應該有X隱藏的中間整數,我想將它保存在axcel文件中 –

+0

就像我的編號是8815392我應該在輸出中得到8XXXXX2 –

回答

1

正如你沒有張貼任何數據和代碼,這裏是一個普遍的形式,假設號碼長短不一:

In [141]: 
s = pd.Series([8815392,2983]) 
s = s.astype(str) 
s.apply(lambda x: x[0] + 'X' * (len(x) - 2) + x[-1]) 

Out[141]: 
0 8XXXXX2 
1  2XX3 
dtype: object 

如果數字長度相等,則可以使用矢量化方法設置整列:

In [142]: 
s = pd.Series([8815392,1291283]) 
s = s.astype(str) 
s.str[0] + 'X' * (s.str.len() - 2)[0] + s.str[-1] 

Out[142]: 
0 8XXXXX2 
1 1XXXXX3 
dtype: object 

也只是爲了澄清,你需要以最大熊貓方法返回一個副本,但不到位的工作分配回操作的通病,但也有一些方法確實有inplace ARG。所以,你需要做到以下幾點:

s = s.apply(lambda x: x[0] + 'X' * (len(x) - 2) + x[-1]) 
+0

不要在評論中發佈數據,編輯你的問題,並確保數據格式化爲 – EdChum

+0

它們的長度不等並且矢量化,不能用於完整色彩。 coloumn是數據框的一部分,當我使用第一種方法時,輸出並不像預期那樣。 –

+0

我不能回答沒有原始數據和代碼顯示此錯誤的假設問題,編輯您的問題,因爲你浪費我的時間告訴我沒有在您的問題中張貼代碼的症狀 – EdChum