Python:从现有列创建新列

2024-04-28 16:09:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图基于这两个列创建一个新列。假设我想创建一个新的列z,当它不丢失时应该是y的值,当y确实丢失时应该是x的值。在这种情况下,我希望z是[1, 8, 10, 8]

   x   y
0  1 NaN
1  2   8
2  4  10
3  8 NaN

Tags: 情况nan正试图
3条回答

使用np.where

In [3]:

df['z'] = np.where(df['y'].isnull(), df['x'], df['y'])
df
Out[3]:
   x   y   z
0  1 NaN   1
1  2   8   8
2  4  10  10
3  8 NaN   8

这里它使用布尔条件,如果true返回df['x']否则df['y']

可以将apply与选项axis=1一起使用。那么你的解决方案非常简洁。

df[z] = df.apply(lambda row: row.y if pd.notnull(row.y) else row.x, axis=1)

新列'z'使用df['z'] = df['y']从列'y'获取其值。这会带来丢失的值,因此使用fillna使用'x'列填充它们。连锁这两个动作:

>>> df['z'] = df['y'].fillna(df['x'])
>>> df
   x   y   z
0  1 NaN   1
1  2   8   8
2  4  10  10
3  8 NaN   8

相关问题 更多 >