在 python 中更改 panda.dataframe 的值(快速方式)
Change values of panda.dataframe (fast way) in python
我想对 pandas.dataframe 的特定列执行操作。
来自这里:
# admit gre gpa rank
# 0 0 1123 3.61 3
# 1 1 4454 3.67 3
# 2 1 8000 4.00 1
# 3 1 6405 3.19 4
# 4 0 5205 2.93 4
我想这样更改 gre 列:Select 只是最后两个数字..(例如:df['gre':0] = 1123 => 23)。
我有一个非常大的数据集,所以我正在寻找一种没有 运行 通过 pandas 数据框的简单方法,我尝试了 python for 循环:
for i in df.index:
df.loc[i, 'gre'] = str(df.loc[i, 'gre'])[2:3]
这项工作但需要时间..很多..谢谢
如果 dtype 是数字那么你可以转换成一个字符串,然后取最后 2 个字符:
In [4]:
df['gre'] = df['gre'].astype(str).str[-2:]
df
Out[4]:
admit gre gpa rank
0 0 23 3.61 3
1 1 54 3.67 3
2 1 00 4.00 1
3 1 05 3.19 4
4 0 05 2.93 4
如果它已经是一个字符串,那么 df['gre'] = df['gre'].str[-2:]
就可以了。
然后您可以转换回来:
In [7]:
df['gre'] = df['gre'].astype(np.int64)
df.dtypes
Out[7]:
admit int64
gre int64
gpa float64
rank int64
dtype: object
计时
In [9]:
%%timeit
for i in df.index:
df.loc[i, 'gre'] = str(df.loc[i, 'gre'])[2:3]
100 loops, best of 3: 2.98 ms per loop
In [11]:
%timeit df['gre'] = df['gre'].astype(str).str[-2:]
1000 loops, best of 3: 380 µs per loop
我们可以看到使用向量化 str
方法的速度提高了 700 多倍
我想对 pandas.dataframe 的特定列执行操作。
来自这里:
# admit gre gpa rank
# 0 0 1123 3.61 3
# 1 1 4454 3.67 3
# 2 1 8000 4.00 1
# 3 1 6405 3.19 4
# 4 0 5205 2.93 4
我想这样更改 gre 列:Select 只是最后两个数字..(例如:df['gre':0] = 1123 => 23)。 我有一个非常大的数据集,所以我正在寻找一种没有 运行 通过 pandas 数据框的简单方法,我尝试了 python for 循环:
for i in df.index:
df.loc[i, 'gre'] = str(df.loc[i, 'gre'])[2:3]
这项工作但需要时间..很多..谢谢
如果 dtype 是数字那么你可以转换成一个字符串,然后取最后 2 个字符:
In [4]:
df['gre'] = df['gre'].astype(str).str[-2:]
df
Out[4]:
admit gre gpa rank
0 0 23 3.61 3
1 1 54 3.67 3
2 1 00 4.00 1
3 1 05 3.19 4
4 0 05 2.93 4
如果它已经是一个字符串,那么 df['gre'] = df['gre'].str[-2:]
就可以了。
然后您可以转换回来:
In [7]:
df['gre'] = df['gre'].astype(np.int64)
df.dtypes
Out[7]:
admit int64
gre int64
gpa float64
rank int64
dtype: object
计时
In [9]:
%%timeit
for i in df.index:
df.loc[i, 'gre'] = str(df.loc[i, 'gre'])[2:3]
100 loops, best of 3: 2.98 ms per loop
In [11]:
%timeit df['gre'] = df['gre'].astype(str).str[-2:]
1000 loops, best of 3: 380 µs per loop
我们可以看到使用向量化 str
方法的速度提高了 700 多倍