簡體   English   中英

如何刪除單列中的小數?

[英]How to Remove Decimal in a Single Column?

我正在嘗試將 DataFrame 中的列轉換為行並將行轉換為列。

      user_id    movie_id    rating
32236   1         1           5
23171   1         2           3
83307   1         3           4
62631   1         4           3
47638   1         5           3
26184   2         1           4
1333    5         1           4
172     5         2           3
54487   6         1           4
52430   7         4           5
18504   10        1           4
4617    10        4           4
44328   12        4           5
30881   13        1           3
4470    13        2           3
21009   13        4           5
39066   13        5           1

接下來我做了:

df = ratings.pivot_table(index=['movie_id'], columns='user_id', values='rating', fill_value='').rename_axis(None, axis=1).reset_index()
df

這就是我得到的:

movie_id    1   2   5   6   7   10  12  13
0   1     5.0   4   4   4       4       3
1   2     3.0       3                   3
2   3     4.0                           
3   4     3.0               5   4   5   5
4   5     3.0                           1

問題是原始值不是小數,為什么排名的第一列(“1”列)使用小數? 以及如何正確修復它(不僅僅是從列中刪除小數,而是像其他列一樣修復它)。

我認為問題是將數值與非數字fill_value='' ,然后浮點數顯示為整數:

df1 = ratings.pivot_table(index='movie_id', columns='user_id', values='rating', fill_value='')
print (df1)
user_id    1  2  5  6  7  10 12 13
movie_id                          
1         5.0  4  4  4     4     3
2         3.0     3              3
3         4.0                     
4         3.0           5  4  5  5
5         3.0                    1

print (df1.applymap(type))
user_id                1                2                5                6   \
movie_id                                                                       
1         <class 'float'>  <class 'float'>  <class 'float'>  <class 'float'>   
2         <class 'float'>    <class 'str'>  <class 'float'>    <class 'str'>   
3         <class 'float'>    <class 'str'>    <class 'str'>    <class 'str'>   
4         <class 'float'>    <class 'str'>    <class 'str'>    <class 'str'>   
5         <class 'float'>    <class 'str'>    <class 'str'>    <class 'str'>   

user_id                7                10               12               13  
movie_id                                                                      
1           <class 'str'>  <class 'float'>    <class 'str'>  <class 'float'>  
2           <class 'str'>    <class 'str'>    <class 'str'>  <class 'float'>  
3           <class 'str'>    <class 'str'>    <class 'str'>    <class 'str'>  
4         <class 'float'>  <class 'float'>  <class 'float'>  <class 'float'>  
5           <class 'str'>    <class 'str'>    <class 'str'>  <class 'float'>  

如果使用數字fill_value=0它工作得很好:

df = ratings.pivot_table(index='movie_id', columns='user_id', values='rating', fill_value=0)
print (df)
user_id   1   2   5   6   7   10  12  13
movie_id                                
1          5   4   4   4   0   4   0   3
2          3   0   3   0   0   0   0   3
3          4   0   0   0   0   0   0   0
4          3   0   0   0   5   4   5   5
5          3   0   0   0   0   0   0   1

如果不需要聚合值並且只需要先將數據透視表轉換為字符串,然后替換缺失值:

ratings['rating'] = ratings['rating'].astype(str)
df = ratings.pivot(index='movie_id', columns='user_id', values='rating').fillna('')
print (df)
user_id  1  2  5  6  7  10 12 13
movie_id                        
1         5  4  4  4     4     3
2         3     3              3
3         4                     
4         3           5  4  5  5
5         3                    1

暫無
暫無

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

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