'''
axis = 0 或 index:如果是单行操作,就是指的是某一行;如果是聚合操作,指的是跨行cross rows
axis = 1 或 columns:如果是单列操作,就指的是某一列;如果是聚合操作,指的是跨列cross columns
按哪个axis,就是这个axis要动起来(类似被for遍历),其他的axis保持不动
'''
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(12).reshape(3,4),columns=['A','B','C','D'])
df
df.drop('A',axis=1)
df
df.drop(1,axis=0)
df
df.mean(axis = 0)
A 4.0
B 5.0
C 6.0
D 7.0
dtype: float64
df.mean(axis = 1)
0 1.5
1 5.5
2 9.5
dtype: float64
def get_sum_value(x):
return x['A']+x['B']+x['C']+x['D']
df['sum_value'] = df.apply(get_sum_value,axis = 1)
df
| A | B | C | D | sum_value |
---|
0 | 0 | 1 | 2 | 3 | 6 |
---|
1 | 4 | 5 | 6 | 7 | 22 |
---|
2 | 8 | 9 | 10 | 11 | 38 |
---|
df['row_sum_value'] = df.apply(get_sum_value,axis = 0)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-17-c2186b52adab> in <module>
----> 1 df['row_sum_value'] = df.apply(get_sum_value,axis = 0)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in apply(self, func, axis, broadcast, raw, reduce, result_type, args, **kwds)
6485 args=args,
6486 kwds=kwds)
-> 6487 return op.get_result()
6488
6489 def applymap(self, func):
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\apply.py in get_result(self)
149 return self.apply_raw()
150
--> 151 return self.apply_standard()
152
153 def apply_empty_result(self):
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\apply.py in apply_standard(self)
255
256 # compute the result using the series generator
--> 257 self.apply_series_generator()
258
259 # wrap results
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\apply.py in apply_series_generator(self)
284 try:
285 for i, v in enumerate(series_gen):
--> 286 results[i] = self.f(v)
287 keys.append(v.name)
288 except Exception as e:
<ipython-input-15-0e2329bd7c2c> in get_sum_value(x)
1 #再次举例,增加列,增加列的值为sum和
2 def get_sum_value(x):
----> 3 return x['A']+x['B']+x['C']+x['D']
4 df['sum_value'] = df.apply(get_sum_value,axis = 1)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py in __getitem__(self, key)
866 key = com.apply_if_callable(key, self)
867 try:
--> 868 result = self.index.get_value(self, key)
869
870 if not is_scalar(result):
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key)
4373 try:
4374 return self._engine.get_value(s, k,
-> 4375 tz=getattr(series.dtype, 'tz', None))
4376 except KeyError as e1:
4377 if len(self) > 0 and (self.holds_integer() or self.is_boolean()):
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()
KeyError: ('A', 'occurred at index A')