将所有列值替换为单个列中的值-Pandas

时间:2019-10-09 02:50:58

标签: python pandas

我希望使用指定列中的整数替换df中所有列中的值。使用下面的df,我想使用Code中的值并将其替换为所有其他列。

df = pd.DataFrame({
    'Place' : ['X','Y','X','Y','X','Y','X','Y'],                                
    'Number' : ['A','B','C','D','F','G','H','I'],          
    'Code' : [1,2,3,0,1,2,5,4],    
    'Value' : ['','','','','','','','']                  
    })

df[:] = df['Code'].apply(lambda x: x if np.isreal(x) else 0).astype(int)

print(df)

预期输出:

  Place Number  Code Value
0  1     1      1    1     
1  2     2      2    2     
2  3     3      3    3     
3  0     0      0    0     
4  1     1      1    1     
5  2     2      2    2     
6  5     5      5    5     
7  4     4      4    4

2 个答案:

答案 0 :(得分:4)

使用reindexffillbfill

df[['Code']].reindex(columns=df.columns).ffill(1).bfill(1).astype(int)

Out[256]:
   Place  Number  Code  Value
0      1       1     1      1
1      2       2     2      2
2      3       3     3      3
3      0       0     0      0
4      1       1     1      1
5      2       2     2      2
6      5       5     5      5
7      4       4     4      4

块状溶液

df[:] =  np.transpose([df.Code] * df.shape[1])

Out[314]:
   Place  Number  Code  Value
0      1       1     1      1
1      2       2     2      2
2      3       3     3      3
3      0       0     0      0
4      1       1     1      1
5      2       2     2      2
6      5       5     5      5
7      4       4     4      4

答案 1 :(得分:3)

尝试一下:

    df[df.columns] = df[['Code', 'Code', 'Code', 'Code']]

或:

    df[df.columns] = df[['Code']*len(df.columns)]

希望它对您有帮助。