pandas.DataFrame.squeeze#
- DataFrame.squeeze(axis=None)[源代码]#
将1维轴对象压缩为标量。
具有单个元素的Series或DataFrame被压缩为标量。单列或单行的DataFrame被压缩为一个系列。否则,对象将保持不变。
当您不知道对象是Series还是DataFrame,但知道它只有一列时,此方法最有用。在这种情况下,您可以安全地呼叫 squeeze 以确保你有一个系列赛。
- 参数
- axis{0或‘index’,1或‘Columns’,无},默认为无
要挤压的特定轴。默认情况下,所有长度为1的轴都是挤压的。
- 退货
- DataFrame、系列或标量
挤压后的投影 axis 或者所有的斧头。
参见
Series.iloc
用于选择标量的基于整数位置的索引。
DataFrame.iloc
用于选择系列的基于整数位置的索引。
Series.to_frame
单列DataFrame的DataFrame.Squeeze的反转。
示例
>>> primes = pd.Series([2, 3, 5, 7])
切片可能会产生具有单个值的系列:
>>> even_primes = primes[primes % 2 == 0] >>> even_primes 0 2 dtype: int64
>>> even_primes.squeeze() 2
挤压每个轴上具有多个值的对象不会执行任何操作:
>>> odd_primes = primes[primes % 2 == 1] >>> odd_primes 1 3 2 5 3 7 dtype: int64
>>> odd_primes.squeeze() 1 3 2 5 3 7 dtype: int64
当与DataFrames一起使用时,挤压甚至更加有效。
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b']) >>> df a b 0 1 2 1 3 4
对单个列进行切片将生成一个仅具有一个值的列的DataFrame:
>>> df_a = df[['a']] >>> df_a a 0 1 1 3
因此,可以向下挤压柱子,从而产生一系列:
>>> df_a.squeeze('columns') 0 1 1 3 Name: a, dtype: int64
从单列分割单行将生成单个标量DataFrame:
>>> df_0a = df.loc[df.index < 1, ['a']] >>> df_0a a 0 1
挤压行将生成单个标量系列:
>>> df_0a.squeeze('rows') a 1 Name: 0, dtype: int64
挤压所有轴将直接投影到标量中:
>>> df_0a.squeeze() 1