Python 通过使用创建的函数关联多个列来填充

Python 通过使用创建的函数关联多个列来填充,python,pandas,fillna,Python,Pandas,Fillna,我在数据框中有3列。 房屋=[“房屋1”、“房屋2”、“房屋3”、“房屋4”、“房屋5”、“房屋6”、“房屋7”、“房屋8”、“房屋9”] 房间=[“厨房”、“浴室”、“卧室”] m2=[8.4.7,楠,楠,楠,6.3.7]。 我想做的是用我设置的模式填充空白,这将是: 如果房间柱为厨房,则m2为5。如果房间柱为浴室,则m2为2。如果房间柱为卧室,m2为4 Input: houses room m2 0 house 1 Kitchen 8 1

我在数据框中有3列。 房屋=[“房屋1”、“房屋2”、“房屋3”、“房屋4”、“房屋5”、“房屋6”、“房屋7”、“房屋8”、“房屋9”] 房间=[“厨房”、“浴室”、“卧室”] m2=[8.4.7,楠,楠,楠,6.3.7]。 我想做的是用我设置的模式填充空白,这将是: 如果房间柱为厨房,则m2为5。如果房间柱为浴室,则m2为2。如果房间柱为卧室,m2为4

Input:
    houses      room        m2
0   house 1  Kitchen         8
1   house 2  Bathroom        4
2   house 3  Bedroom         7   
3   house 4  Kitchen       NaN
4   house 5  Bathroom      NaN
5   house 6  Bedroom       NaN
6   house 7  Kitchen         6
7   house 8  Bathroom        3
8   house 9  Bedroom         7

Tried df.loc[(df["m2"].isnull() & df["room"] == "Kitchen"), "m2"] == 5
df.loc [(df ["m2"]. isnull () & df ["room"] == "Bathroom"), "m2"] == 2
df.loc [(df ["m2"]. isnull () & df ["room"] == "Bedroom"), "m2"] == 4

but it did not work.

FutureWarning: elementwise comparison failed; returning scalar, but in the future will perform elementwise comparison

Expected output:

    houses      room        m2
0   house 1  Kitchen         8
1   house 2  Bathroom        4
2   house 3  Bedroom         7   
3   house 4  Kitchen         5
4   house 5  Bathroom        2
5   house 6  Bedroom         4
6   house 7  Kitchen         6
7   house 8  Bathroom        3
8   house 9  Bedroom         7
A+选项:

A+选项:


房间m2
0房子1厨房8
1栋房子2浴室4
2栋3卧室7
3栋房子4厨房5
4楼5浴室2
5间房子6间卧室4间
6楼7厨房6
7楼8浴室3
8号楼9间卧室7

不知怎的,填充+映射选项改变了房间的顺序,但np.where+replace选项正确无误!当然可以,但我至少需要15%的声望才能投票。
df['m2'] = df['m2'].fillna(
    df['room'].map({'Kitchen': 5, 'Bathroom': 2, 'Bedroom': 4})
).astype(int)
df['m2'] = np.where(
    df['m2'].isna(),
    df['room'].replace({'Kitchen': 5, 'Bathroom': 2, 'Bedroom': 4}),
    df['m2']
).astype(int)