pandas官方文档中cookbook(1)的idioms的翻译

来源:互联网 发布:linux tmp 手动清理 编辑:程序博客网 时间:2024/05/22 01:30

python代码风格

文档版本:0.20.3
这些例子是用python3.4写出来的。对于较早的python版本需要对代码做些相应的调整。
Pandas(pd)和Numpy(np)是唯一两个默认导入的包。其余的包会显示导入给新用户看。
若有翻译不当的地方,请多多指教。

这份文档中的例子都是从Stack-Overflow和Github中别人提问的比较经典的问题
这里有一些pandas整洁的代码书写风格。

对一列进行逻辑判断,然后作用与其他列上。
http://stackoverflow.com/questions/17128302/python-pandas-idiom-for-if-then-else

In [1]: df = pd.DataFrame(...:      {'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}); df...: Out[1]:     AAA  BBB  CCC0    4   10  1001    5   20   502    6   30  -303    7   40  -50

if-then

对一列进行判断然后作用在另一列上

In [2]: df.loc[df.AAA >= 5,'BBB'] = -1; dfOut[2]: AAA  BBB  CCC0    4   10  1001    5   -1   502    6   -1  -303    7   -1  -50

对一列进行判断然后作用在另外两列上

In [3]: df.loc[df.AAA >= 5,['BBB','CCC']] = 555; dfOut[3]:    AAA  BBB  CCC0    4   10  1001    5  555  5552    6  555  5553    7  555  555

对其他行进行不同的逻辑判断,下面类似于else操作。

In [4]: df.loc[df.AAA < 5,['BBB','CCC']] = 2000; dfOut[4]:     AAA   BBB   CCC0    4  2000  20001    5   555   5552    6   555   5553    7   555   555

或者在你建立了一个布尔值的数据框时,你可以使用pandas的where函数来对各列进行逻辑判断。

In [5]: df_mask = pd.DataFrame({'AAA' : [True] * 4, 'BBB' : [False] * 4,'CCC' : [True,False] * 2})In [6]: df.where(df_mask,-1000)Out[6]:     AAA   BBB   CCC0    4 -1000  20001    5 -1000 -10002    6 -1000   5553    7 -1000 -1000

使用numpy的where函数对列进行逻辑判断

http://stackoverflow.com/questions/19913659/pandas-conditional-creation-of-a-series-dataframe-column

In [7]: df = pd.DataFrame(...:      {'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}); df...: Out[7]:     AAA  BBB  CCC0    4   10  1001    5   20   502    6   30  -303    7   40  -50In [8]: df['logic'] = np.where(df['AAA'] > 5,'high','low'); dfOut[8]:     AAA  BBB  CCC logic0    4   10  100   low1    5   20   50   low2    6   30  -30  high3    7   40  -50  high
阅读全文
0 0
原创粉丝点击