Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python(pandas)将None列值替换为另一列的值?_Python_Pandas_Numpy - Fatal编程技术网

如何使用python(pandas)将None列值替换为另一列的值?

如何使用python(pandas)将None列值替换为另一列的值?,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据框,其中第一列表示颜色,第二列表示项目的描述。不幸的是,Color列的一些信息被合并到了Description列中,如下所示: data = {"Color": [None, "Red", "Blue", "Green", None], "Description": ["Red T-Shirt", "Skirt", "P

我有一个数据框,其中第一列表示颜色,第二列表示项目的描述。不幸的是,
Color
列的一些信息被合并到了
Description
列中,如下所示:

data = {"Color": [None, "Red", "Blue", "Green", None],
        "Description": ["Red T-Shirt", "Skirt", "Pants", "Underwear", "Blue Cap"]}

df = pd.DataFrame(data)


| Color | Description |
|-------|-------------|
|None   |Red T-Shirt  |
|Blue   |Pants        |
|Green  |Underwear    |
|None   |Blue Cap     |
首先,我将
Description
列拆分为空格:

df["Description"] = df["Description"].apply(lambda x: x.split(" "))
我想做的是用
Description
的第一个元素替换
Color
上的
None
值,其中
Color为None
。我使用的代码是:

colors = ["Red", "Blue", "Green"]
df["Color"] = df["Color"].where(df["Color"] != None, df["Description"][0])
df["Color"] = df["Color"].apply(lambda x: x if x in colors else "Color N/A")
我的代码正在返回以下信息:

| Color | Description      |
|-------|------------------|
|None   |["Red", "T-Shirt"]|
|Blue   |["Pants"]         |
|Green  |["Underwear"]     |
|None   |["Blue", "Cap"]   |
但我们应该返回:

| Color | Description      |
|-------|------------------|
|Red    |["Red", "T-Shirt"]|
|Blue   |["Pants"]         |
|Green  |["Underwear"]     |
|Blue   |["Blue", "Cap"]   |
知道我犯了什么错误吗?

试试这个-

根据空格字符拆分第二列,然后使用np.where填充“Color”列中的空值

df['Description'] = df['Description'].str.split(' ')
df['Color'] = np.where(df['Color'].isna() , df['Description'].str[0], df['Color'])
print(df)

您可以通过设置轴=1对行执行
apply()
。如果
Color
列值为
None
,则返回
Description
列的第一个值

df[“Description”]=df[“Description”].apply(lambda x:x.split(“”)
df['Color']=df.apply(lambda行:行['Description'][0],如果行['Color']==没有其他行['Color'],轴=1)
print(df)

   Color     Description
0    Red  [Red, T-Shirt]
1    Red         [Skirt]
2   Blue         [Pants]
3  Green     [Underwear]
4   Blue     [Blue, Cap]