熊猫用条件填充了另一列中的nan值?

发布于 2025-02-06 11:13:23 字数 481 浏览 3 评论 0原文

我有以下数据框:

data = {'feature1_in_use?': [0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1],
     'feature1_available?': [0, 1, 1, 'NA', 1, 'NA', 1, 1, 'NA', 1, 1]}

df = pd.DataFrame(data)

在“ feature1_available?”列中我想用'feature1_in_use中的值填充NAN? '仅在1时,否则用'x'或任何有效的字符串填充它。

看起来应该这样:

data = {'feature1_in_use?': [0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1],
     'feature1_available?': [0, 1, 1, 'X', 1, 1, 1, 1, 1, 1, 1]}

df = pd.DataFrame(data)

I have the following dataframe:

data = {'feature1_in_use?': [0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1],
     'feature1_available?': [0, 1, 1, 'NA', 1, 'NA', 1, 1, 'NA', 1, 1]}

df = pd.DataFrame(data)

In the column 'feature1_available?' I want to fill the nan with the values from 'feature1_in_use? ' only when these are 1, otherwise fill it up with 'X' or any valid string.

It should look like this:

data = {'feature1_in_use?': [0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1],
     'feature1_available?': [0, 1, 1, 'X', 1, 1, 1, 1, 1, 1, 1]}

df = pd.DataFrame(data)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月野兔 2025-02-13 11:13:25

您可以使用的灵活选项是np.Select()

data = {'feature1_in_use?': [0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1],
     'feature1_available?': [0, 1, 1, np.nan, 1, np.nan, 1, 1, np.nan, 1, 1]}

df = pd.DataFrame(data)
df['feature1_available?'] = df['feature1_available?'].replace({np.nan : None})
condition_list = [
    ((df['feature1_available?'].values == None) & (df['feature1_in_use?'] == 1)),
    ((df['feature1_available?'].values == None) & (df['feature1_in_use?'] == 0))
]
choice_list = [df['feature1_in_use?'], 'X']
df['feature1_available?'] = np.select(condition_list, choice_list, df['feature1_available?'])
df

A flexible option you could use would be np.select()

data = {'feature1_in_use?': [0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1],
     'feature1_available?': [0, 1, 1, np.nan, 1, np.nan, 1, 1, np.nan, 1, 1]}

df = pd.DataFrame(data)
df['feature1_available?'] = df['feature1_available?'].replace({np.nan : None})
condition_list = [
    ((df['feature1_available?'].values == None) & (df['feature1_in_use?'] == 1)),
    ((df['feature1_available?'].values == None) & (df['feature1_in_use?'] == 0))
]
choice_list = [df['feature1_in_use?'], 'X']
df['feature1_available?'] = np.select(condition_list, choice_list, df['feature1_available?'])
df
旧人 2025-02-13 11:13:25

假设您希望您的空白值为“ x”,然后执行以下操作:

df['feature1_available'] = df['feature1_available'].fillna(df['feature1_in_use'])

df['feature1_in_use'] = df['feature1_in_use'].fillna('x')

步骤1填充 farture1_available 的空白值来自 features1_in_use 。步骤2用“ x”填充所有剩余的NAN值(或您选择的任何其他值

Lets say you want your blank value to be 'x' then do the following:

df['feature1_available'] = df['feature1_available'].fillna(df['feature1_in_use'])

df['feature1_in_use'] = df['feature1_in_use'].fillna('x')

Step 1 fills blank values in feature1_available from feature1_in_use. Step 2 fills any remaining nan values with 'x' (or any other value you choose

把梦留给海 2025-02-13 11:13:25

第一行创建了一个系列,其中除1以外的其他所有内容都是'x'。然后,“ na”被np.nan替换,该使我们能够用创建的输出的系列填充缺失值

s = df['feature1_in_use?'].where(df['feature1_in_use?'].eq(1),'X')
df.replace('NA',np.NaN).fillna({'feature1_available?':s})

    feature1_in_use? feature1_available?
0                  0                 0.0
1                  0                 1.0
2                  1                 1.0
3                  0                   X
4                  1                 1.0
5                  1                   1
6                  1                 1.0
7                  0                 1.0
8                  1                   1
9                  0                 1.0
10                 1                 1.0

The first line creates a series where everything other than 1 is 'X'. Then 'NA' is replaced with np.NaN which allows us to fill in the missing values with the series that was created

s = df['feature1_in_use?'].where(df['feature1_in_use?'].eq(1),'X')
df.replace('NA',np.NaN).fillna({'feature1_available?':s})

Output:

    feature1_in_use? feature1_available?
0                  0                 0.0
1                  0                 1.0
2                  1                 1.0
3                  0                   X
4                  1                 1.0
5                  1                   1
6                  1                 1.0
7                  0                 1.0
8                  1                   1
9                  0                 1.0
10                 1                 1.0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文