如何识别Pandas系列中的空字符串

2024-05-16 04:06:28 发布

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

我有一个dataframe,如果列“gender”为空,我想用列“name”填充“column3”,否则用列“gender”的值填充

vals = {
    'name' : ['n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7'],
    'gender' : ['', '', '', 'f',  'f', 'c', 'c'],
    'age' : [39, 12, 27, 13, 36, 29, 10]
}
df4 = pd.DataFrame(vals)
df4['column3'] = df4['name'] if len(df4['gender']) == 0 else df4['gender']

“性别3”列中只有“值”的结果。 我试过以下说法:

^{pr2}$

同样的结果..所以我认为我的代码不能识别Python数据帧中的空字符串。我错过了什么?在


Tags: namedataframeagegenderpdn2valsn6
3条回答

您的numpy.where构造非常适合使用。在

您面临的问题是如何测试列与空字符串。答案是检查等式与''。在

这很容易实现:

df4['column3'] = np.where(df4['gender'] == '', df4['name'], df4['gender'])

^{}测试序列是否有没有项,即没有行,而不是其元素是否为空字符串。在

示例

^{pr2}$

我更喜欢用熊猫一个人来做这件事,而不是介绍numpy:

df4['column3'] = df4[['gender', 'name']].apply(lambda x: x[0] if x[0] else x[1], axis=1)

有很多方法,但我觉得以下是最简洁的:

idx = lambda x: x.gender==''
df4.loc[idx, 'column3'] = df4.loc[idx, 'name']
df4.column3= df.column3.fillna(df4.gender)

相关问题 更多 >