【问题标题】:How to replace column values with 1 and zero?如何用 1 和 0 替换列值?
【发布时间】:2018-04-26 12:09:59
【问题描述】:

我的数据框中有一列具有字符串值,如图 1 所示。

我想做的是用 1 替换 0 和其他的所有 nan 值(无论另一个字段是 string 和 int) 我试过这个

func_lambda = lambda x: 1 if any(dataframe['Colum'].values != 0) else 0

但是 t 正在用 1 替换所有列。

这是我的 df.head

datacol.head(20)
Out[77]: 
0                          nan
1                   4500856427
2                      4003363
3                          nan
4                      16-4989
5                          nan
6                          nan
7              WVE-78686557032
8                          nan
9                   4501581113
10    D4-SC-0232737-1/G1023716
11                         nan
12                         nan
13                  4502549104
14                         nan
15                         nan
16                         nan
17                    IT008297
18                   15\036628
19                   299011667
Name: Customer_PO_Number, dtype: object

【问题讨论】:

  • 用 0 替换 nan check this 和其他检查 this
  • 我已经试过了,那是行不通的。因为他只有一种数据。但在我的情况下,我有不同的。
  • 那么请发布您的dfdf.head() 而不是图片以获得更好的答案!
  • 编辑了问题,现在看看
  • @Imran_Ahmed_Ghazali:检查答案

标签: python pandas dataframe lambda


【解决方案1】:

检查一下:

import pandas as pd

df = pd.DataFrame({"Customer_PO_Number":
                       ['nan','4500856427','4003363','nan','16 - 4989','nan','nan','WVE - 78686557032',
                        'nan','4501581113','D4 - SC - 0232737 - 1 / G1023716','nan','nan','4502549104',
                        'nan','nan','nan','IT008297','15\03662','8','299011667']})


df.replace('nan', 0, inplace=True)  # for replacing nan to 0

df[df != 0] = 1     # for replacing others to 1
print(df)

它会给你这样的输出:

   Customer_PO_Number
0                   0
1                   1
2                   1
3                   0
4                   1
5                   0
6                   0
7                   1
8                   0
9                   1
10                  1
11                  0
12                  0
13                  1
14                  0
15                  0
16                  0
17                  1
18                  1
19                  1
20                  1

希望对你有帮助! :)

【讨论】:

【解决方案2】:

您可以使用布尔测试并将结果转换为整数:

(df['Customer_PO_Number'] == 'nan').astype(int)

输出:

0     1
1     0
2     0
3     1
4     0
5     1
6     1
7     0
8     1
9     0
10    0
11    1
12    1
13    0
14    1
15    1
16    1
17    0
18    0
19    0
20    0
Name: Customer_PO_Number, dtype: int32

如果 'nan' 真的是 np.nan 那么你可以使用isnull:

df['Customer_PO_Number'].isnull().astype(int)

【讨论】:

  • df['Customer_PO_Number'].isnull().astype(int) ,这对我有用。
猜你喜欢
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2016-10-26
  • 2021-01-04
  • 2018-03-12
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多