python pandas 获取列值的第一位数字

python pandas get first digits of column values

我需要为 daframe 的每一行获取存储在另一个索引(或 reset_index() 之后的列)中的数字的前两位数字。我该怎么做?

我的数据框:

        value
index1       
110202      1
223168      5
850484      2
298008      3
950000      6
113500      6
849464      2
849616     10

我想获得即:

                  value
index1 new_value       
110202 11             1
223168 22             5
850484 85             2
298008 29             3
950000 95             6
113500 11             6
849464 84             2
849616 84            10

根据 df.index.values 的索引创建一个列表 然后迭代此数组中的值并获取前 2 个字符

假设 index1df 的索引,你可以这样做:

df['new_value'] = df.index.astype(str).str[:2]
print(df)

输出

        value new_value
index1                 
110202      1        11
223168      5        22
850484      2        85
298008      3        29
950000      6        95
113500      6        11
849464      2        84
849616     10        84

基本上将列转换为字符串列,然后使用str accessor to grab the first two characters. For more on working with text data, see here

作为替代方案,您可以重置索引并访问 index1 列,例如:

df = df.reset_index()
df['new_value'] = df['index1'].astype(str).str[:2]
print(df.set_index(['index1', 'new_value']))

输出

                  value
index1 new_value       
110202 11             1
223168 22             5
850484 85             2
298008 29             3
950000 95             6
113500 11             6
849464 84             2
849616 84            10

请注意,在此替代解决方案中,我将索引设置为列 new_valueindex1.