我正在使用Python Pandas&我有以下用例 -
我使用参数字典来接受用户输入&我有一个输入变量" Period"用户值为10.
paramDict = {
"Period":
{
"Description": "A Period to filter on.",
"ParameterType" : "Value",
"DataType": "Number",
"Value" : ['10']
}
}
现在,我有一个数据帧df_temp,如下所示 -
CODE POSTING_PERIOD POSTING_VALUE
0 00152 CDD01J 115084
1 00152 CDD02J 115177
2 00152 CDD03J 115271
3 00152 CDD04J 115359
4 00152 CDD05J 115359
5 00152 CDD06J 115359
6 00152 CDD07J 115359
7 00152 CDD08J 115359
8 00152 CDD09J 115359
9 00152 CDD10J 115359
10 00152 CDD11J 115359
11 00152 CDD12J 115359
现在,根据用户输入" 10"在这种情况下,我只想选择第9行,其中df [' POSTING_PERIOD'] =' CDD10J'
注意:如果用户输入为1,我们应该能够前缀0到1&然后应选择第0行,其中df [' POSTING_PERIOD'] =' CDD01J'
你能帮我一下吗?感谢
答案 0 :(得分:1)
编辑:进一步反射时,只需使用zfill将字符串填充到长度为2 zfill会将一个字符串转换为具有填充零的特定长度的字符串:
In [1]: '1'.zfill(2)
Out [1]: '01'
In [2]: '12'.zfill(2)
Out [2]: '12'
您可以使用标准字符串方法来获取数据帧的一部分。这看起来像
df_temp[df_temp.POSTING_PERIOD.str.contains(paramDict['Period']['Value'].zfill(2))]
答案 1 :(得分:1)
扩展@joris代码:
> user_input = paramDict['Period']['Value']
> df_temp[df_temp['POSTING_PERIOD'].str[3:5].astype(int) == int(user_input)]
CODE POSTING_PERIOD POSTING_VALUE
0 152 CDD01J 115084