df.pivot和df.reindex,df.align 的区别?
时间: 2024-06-17 22:03:27 浏览: 153
df.rank & pd.pivot_table & pd.read_excel & df添加行 &调整df行列顺序(reindex再理解)
`df.pivot`、`df.reindex` 和 `df.align` 的区别如下:
1. `df.pivot` 用于根据给定的索引/列值对重新构造DataFrame,返回一个新的DataFrame对象。而 `df.reindex` 用于对行或列进行重新标记,并返回具有新索引的DataFrame对象。
2. `df.pivot` 可以使用聚合函数来汇总重复索引/列值的数据,而 `df.reindex` 不会进行这样的操作。
3. `df.align` 用于沿着指定的轴对齐两个对象,并返回一个元组,包含两个对象的重新索引版本。
下面是 `df.pivot` 和 `df.reindex` 的使用示例:
引用:df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E']) [^1]
```python
import pandas as pd
import numpy as np
# 创建一个 DataFrame
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': np.random.randn(8),
'D': np.random.randn(8)})
# 对 DataFrame 进行重新索引
df1 = df.reindex(index=range(4), columns=list(df.columns) + ['E'])
print(df1)
```
输出结果:
```
A B C D E
0 foo one 0.884294 0.848049 NaN
1 bar one -0.252554 0.760753 NaN
2 foo two 0.062926 -0.225259 NaN
3 bar three 0.055329 0.785876 NaN
```
引用:pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C']) [^1]
```python
import pandas as pd
import numpy as np
# 创建一个 DataFrame
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': np.random.randn(8),
'D': np.random.randn(8)})
# 使用 pivot_table() 聚合数据
pv = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])
print(pv)
```
输出结果:
```
C -0.902191 0.101844 0.228387 ... 1.300993 1.588940 1.756183
A B ...
bar one NaN NaN 0.011764 ... NaN NaN NaN
three NaN NaN NaN ... NaN NaN NaN
two 1.208722 NaN NaN ... NaN NaN NaN
foo one -1.459425 NaN NaN ... NaN NaN NaN
three NaN NaN NaN ... NaN NaN -0.335457
two NaN -0.877678 NaN ... 1.057251 0.183236 NaN
[6 rows x 8 columns]
```
阅读全文