Заменить все значения столбца значением из одного столбца - Панды - PullRequest
3 голосов
/ 09 октября 2019

Я надеюсь заменить значения во всех столбцах в пределах 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 ]

4 голосов
/ 09 октября 2019

Использование reindex, ffill, bfill

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

Numpy решение

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
3 голосов
/ 09 октября 2019

Попробуйте:

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

или:

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

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...