python pandas 通配符?用常量替换 df 中的所有值
python pandas wildcard? Replace all values in df with a constant
我有一个 df
,想制作一个大小相同但全部 1
的 new_df
。东西要精神:new_df=df.replace("*","1")
。我认为这比从头开始创建新的 df 更快,因为我需要获取尺寸,用 1
填充它,然后复制所有 headers。除非我错了。
其实很简单。
import pandas as pd
d = [
[1,1,1,1,1],
[2,2,2,2,2],
[3,3,3,3,3],
[4,4,4,4,4],
[5,5,5,5,5],
]
cols = ["A","B","C","D","E"]
df = pd.DataFrame(d, columns=cols)
print df
print "------------------------"
df.loc[:,:] = 1
print df
结果:
A B C D E
0 1 1 1 1 1
1 2 2 2 2 2
2 3 3 3 3 3
3 4 4 4 4 4
4 5 5 5 5 5
------------------------
A B C D E
0 1 1 1 1 1
1 1 1 1 1 1
2 1 1 1 1 1
3 1 1 1 1 1
4 1 1 1 1 1
显然,df.loc[:,:]
意味着您定位所有列中的所有行。如果你想要一个新的数据框,只需使用 df2 = df.copy()
或其他东西。
df_new = pd.DataFrame(np.ones(df.shape), 列=df.columns)
import numpy as np
import pandas as pd
d = [
[1,1,1,1,1],
[2,2,2,2,2],
[3,3,3,3,3],
[4,4,4,4,4],
[5,5,5,5,5],
]
cols = ["A","B","C","D","E"]
%timeit df1 = pd.DataFrame(np.ones(df.shape), columns=df.columns)
10000 loops, best of 3: 94.6 µs per loop
%timeit df2 = df.copy(); df2.loc[:, :] = 1
1000 loops, best of 3: 245 µs per loop
%timeit df3 = df * 0 + 1
1000 loops, best of 3: 200 µs per loop
我有一个 df
,想制作一个大小相同但全部 1
的 new_df
。东西要精神:new_df=df.replace("*","1")
。我认为这比从头开始创建新的 df 更快,因为我需要获取尺寸,用 1
填充它,然后复制所有 headers。除非我错了。
其实很简单。
import pandas as pd
d = [
[1,1,1,1,1],
[2,2,2,2,2],
[3,3,3,3,3],
[4,4,4,4,4],
[5,5,5,5,5],
]
cols = ["A","B","C","D","E"]
df = pd.DataFrame(d, columns=cols)
print df
print "------------------------"
df.loc[:,:] = 1
print df
结果:
A B C D E
0 1 1 1 1 1
1 2 2 2 2 2
2 3 3 3 3 3
3 4 4 4 4 4
4 5 5 5 5 5
------------------------
A B C D E
0 1 1 1 1 1
1 1 1 1 1 1
2 1 1 1 1 1
3 1 1 1 1 1
4 1 1 1 1 1
显然,df.loc[:,:]
意味着您定位所有列中的所有行。如果你想要一个新的数据框,只需使用 df2 = df.copy()
或其他东西。
df_new = pd.DataFrame(np.ones(df.shape), 列=df.columns)
import numpy as np
import pandas as pd
d = [
[1,1,1,1,1],
[2,2,2,2,2],
[3,3,3,3,3],
[4,4,4,4,4],
[5,5,5,5,5],
]
cols = ["A","B","C","D","E"]
%timeit df1 = pd.DataFrame(np.ones(df.shape), columns=df.columns)
10000 loops, best of 3: 94.6 µs per loop
%timeit df2 = df.copy(); df2.loc[:, :] = 1
1000 loops, best of 3: 245 µs per loop
%timeit df3 = df * 0 + 1
1000 loops, best of 3: 200 µs per loop