Python 熊猫,按列和行选择

Python 熊猫,按列和行选择,python,pandas,Python,Pandas,我想根据列和行的某个函数汇总我选择的所有值 另一种说法是,我想使用行索引和列索引的函数来确定一个值是否应该包含在沿轴的和中 有没有一种简单的方法可以做到这一点?可以使用语法dataframe[]选择列。索引(行)可用于使用dataframe.index方法进行过滤 import pandas as pd df = pd.DataFrame({'a': [0.1, 0.2], 'b': [0.2, 0.1]}) odd_a = df['a'][df.index % 2 == 1] even_b

我想根据列和行的某个函数汇总我选择的所有值

另一种说法是,我想使用行索引和列索引的函数来确定一个值是否应该包含在沿轴的和中


有没有一种简单的方法可以做到这一点?

可以使用语法
dataframe[]
选择列。索引(行)可用于使用
dataframe.index
方法进行过滤

import pandas as pd

df = pd.DataFrame({'a': [0.1, 0.2], 'b': [0.2, 0.1]})

odd_a = df['a'][df.index % 2 == 1]
even_b = df['b'][df.index % 2 == 0]
# odd_a: 
# 1    0.2
# Name: a, dtype: float64
# even_b: 
# 0    0.2
# Name: b, dtype: float64

可以使用语法
dataframe[]
选择列。索引(行)可用于使用
dataframe.index
方法进行过滤

import pandas as pd

df = pd.DataFrame({'a': [0.1, 0.2], 'b': [0.2, 0.1]})

odd_a = df['a'][df.index % 2 == 1]
even_b = df['b'][df.index % 2 == 0]
# odd_a: 
# 1    0.2
# Name: a, dtype: float64
# even_b: 
# 0    0.2
# Name: b, dtype: float64

如果
df
是您的数据帧:

In [477]: df
Out[477]: 
   A   s2  B
0  1    5  5
1  2    3  5
2  4    5  5
您可以像这样访问奇数行:

In [478]: df.loc[1::2]
Out[478]: 
   A   s2  B
1  2    3  5
甚至像这样的:

In [479]: df.loc[::2]
Out[479]: 
   A   s2  B
0  1    5  5
2  4    5  5
要回答您的问题,获得偶数行和列
B
将是:

In [480]: df.loc[::2,'B']
Out[480]: 
0    5
2    5
Name: B, dtype: int64
奇数行和奇数列
A
可按如下方式完成:

In [481]: df.loc[1::2,'A']
Out[481]: 
1    2
Name: A, dtype: int64

如果
df
是您的数据帧:

In [477]: df
Out[477]: 
   A   s2  B
0  1    5  5
1  2    3  5
2  4    5  5
您可以像这样访问奇数行:

In [478]: df.loc[1::2]
Out[478]: 
   A   s2  B
1  2    3  5
甚至像这样的:

In [479]: df.loc[::2]
Out[479]: 
   A   s2  B
0  1    5  5
2  4    5  5
要回答您的问题,获得偶数行和列
B
将是:

In [480]: df.loc[::2,'B']
Out[480]: 
0    5
2    5
Name: B, dtype: int64
奇数行和奇数列
A
可按如下方式完成:

In [481]: df.loc[1::2,'A']
Out[481]: 
1    2
Name: A, dtype: int64

我认为这应该是相当普遍的,如果不是最干净的实现。这应该允许根据条件(我在字典中定义)为行和列应用单独的函数

将numpy导入为np
作为pd进口熊猫
ran=np.random.randint(0,10,大小=(5,5))
df=pd.DataFrame(ran,列=[“a”、“b”、“c”、“d”、“e”])
#定义传递什么函数的字典
d_col={“高”:[“a”、“c”、“e”],“低”:[“b”、“d”]}
d_行={“高”:[1,2,3],“低”:[0,4]}
#生成布尔序列的列表

i_col=[df[i]。如果我在d_col[“high”]else df[i]中,则应用(lambda x:x>5)。如果我在d_row[“high”]else df.T[i]中,则应用(lambda x:x我认为如果不是最干净的实现,则应该相当通用。这应该允许根据条件(我在字典中定义的)为行和列应用单独的函数

将numpy导入为np
作为pd进口熊猫
ran=np.random.randint(0,10,大小=(5,5))
df=pd.DataFrame(ran,列=[“a”、“b”、“c”、“d”、“e”])
#定义传递什么函数的字典
d_col={“高”:[“a”、“c”、“e”],“低”:[“b”、“d”]}
d_行={“高”:[1,2,3],“低”:[0,4]}
#生成布尔序列的列表

i_col=[df[i].apply(lambda x:x>5)如果我在d_col[“high”]else df[i].apply(lambda x:x5)如果我在d_row[“high”]else df.T[i]。apply(lambda x:xI已经删除了这个示例,因为它不够通用。您希望它有多通用?您希望最终得到什么接口?我希望能够做到这一点:(lambda x,y:x[4]