python - 生成负数序列

标签 python pandas

我有以下数据框:

    userId  firstName   lastName        gender          level
61  -1  Not Provided    Not Provided    Not Provided    paid
100 -1  Not Provided    Not Provided    Not Provided    free

两个userId都是-1,因为我执行了代码user_df['userId'] = user_df['userId'].replace(r'^\s*$', '-1', regex=True)

是否可以设置连续的负数,例如 -1、-2、...?

最佳答案

如果只想替换空字符串,请使用 Series.str.contains对于此值的掩码,然后添加长度为 bool 掩码中的 True 总和的数组:

user_df = pd.DataFrame({'userId':['','','qq','']})

m = user_df['userId'].str.contains(r'^\s*$')

user_df.loc[m, 'userId'] = -pd.np.arange(1, m.sum() + 1)
print (user_df)
.  userId
0     -1
1     -2
2     qq
3     -3

详细信息:

user_df.loc[m, 'userId'] = -pd.np.arange(1, m.sum() + 1)
print (m)
0     True
1     True
2    False
3     True
Name: userId, dtype: bool

print (m.sum())
3

print (-pd.np.arange(1, m.sum() + 1))
[-1 -2 -3]
<小时/>

这里也可以 import numpy pandas 所需的内容:

import numpy as np

m = user_df['userId'].str.contains(r'^\s*$')

user_df.loc[m, 'userId'] = -np.arange(1, m.sum() + 1)

关于python - 生成负数序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59374555/

相关文章:

python - 在 Pandas 中按前一列值添加列

python - Xlsxwriter 计数/求和函数

python - Qt - 加载扩展名错误的图像

python - Pandas 在日期列问题上合并

python - 两个数据框的乘法

python - 按日期时间间隔比较两个数据帧(python pandas)

python - 使用查询抓取网页

python - 根据时间序列中的先前值和后续值将值替换为 NaN

python - 如何在 Python 中获取嵌套函数的命名空间?

python - 直接对 celery 任务进行单元测试