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 个字符
假设 index1
是 df
的索引,你可以这样做:
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_value
和 index1
.
我需要为 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 个字符
假设 index1
是 df
的索引,你可以这样做:
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_value
和 index1
.