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

use*_*374 3 python indexing digits pandas

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

我的数据框:

        value
index1       
110202      1
223168      5
850484      2
298008      3
950000      6
113500      6
849464      2
849616     10
Run Code Online (Sandbox Code Playgroud)

我想获得即:

                  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
Run Code Online (Sandbox Code Playgroud)

Dan*_*ejo 6

假设index1df你可以做的索引:

df['new_value'] = df.index.astype(str).str[:2]
print(df)
Run Code Online (Sandbox Code Playgroud)

输出

        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
Run Code Online (Sandbox Code Playgroud)

基本上将列转换为字符串列,然后使用str访问器获取前两个字符。有关处理文本数据的更多信息,请参见此处

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

df = df.reset_index()
df['new_value'] = df['index1'].astype(str).str[:2]
print(df.set_index(['index1', 'new_value']))
Run Code Online (Sandbox Code Playgroud)

输出

                  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
Run Code Online (Sandbox Code Playgroud)

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