Pandas,在另一行的单元格上使用 .loc
Pandas, Using .loc on a cell from another row
我希望根据几个条件来处理大量数据。一个基于同一行,而另一个基于不同行的单元格。
例如我有一个像这样的 df,我在其中使用
df['true'] = df.loc[:,['max','value']].min(axis=1)
添加 'true' 列
max value true
0,00 3,00 0,00
0,00 4,00 0,00
0,00 4,00 0,00
0,00 2,00 0,00
3,00 3,00 3,00
3,00 1,00 1,00
3,00 4,00 3,00
3,00 1,00 1,00
3,00 4,00 3,00
3,00 0,00 0,00
但我还想根据 'max' 两行中单元格的值向列 'true' 添加条件。像 .loc 我想用
之类的东西来检查整个数据帧的这种情况
df.loc[df['max'] - 2 = 0,'true'] = 0
并且由于 pandas 非常擅长查询,所以我不想编写 if 语句来遍历整个数据帧。
这种情况下的输出将是:
max value true
0,00 3,00 0,00
0,00 4,00 0,00
0,00 4,00 0,00
0,00 2,00 0,00
3,00 3,00 **0,00**
3,00 1,00 **0,00**
3,00 4,00 3,00
3,00 1,00 1,00
3,00 4,00 3,00
3,00 0,00 0,00
有什么建议吗?
谢谢
Solution thx @EdChum =
df.loc[df['max'].shift(+ 2) == 0,'true'] = 0
我想你需要 shift
和参数 periods = 2
:
df.loc[df['max'].shift(periods = 2) == 0,'true'] = 0
print df
max value true
0 0 3 0
1 0 4 0
2 0 4 0
3 0 2 0
4 3 3 0
5 3 1 0
6 3 4 3
7 3 1 1
8 3 4 3
9 3 0 0
我希望根据几个条件来处理大量数据。一个基于同一行,而另一个基于不同行的单元格。
例如我有一个像这样的 df,我在其中使用
df['true'] = df.loc[:,['max','value']].min(axis=1)
添加 'true' 列
max value true
0,00 3,00 0,00
0,00 4,00 0,00
0,00 4,00 0,00
0,00 2,00 0,00
3,00 3,00 3,00
3,00 1,00 1,00
3,00 4,00 3,00
3,00 1,00 1,00
3,00 4,00 3,00
3,00 0,00 0,00
但我还想根据 'max' 两行中单元格的值向列 'true' 添加条件。像 .loc 我想用
之类的东西来检查整个数据帧的这种情况df.loc[df['max'] - 2 = 0,'true'] = 0
并且由于 pandas 非常擅长查询,所以我不想编写 if 语句来遍历整个数据帧。
这种情况下的输出将是:
max value true
0,00 3,00 0,00
0,00 4,00 0,00
0,00 4,00 0,00
0,00 2,00 0,00
3,00 3,00 **0,00**
3,00 1,00 **0,00**
3,00 4,00 3,00
3,00 1,00 1,00
3,00 4,00 3,00
3,00 0,00 0,00
有什么建议吗?
谢谢
Solution thx @EdChum =
df.loc[df['max'].shift(+ 2) == 0,'true'] = 0
我想你需要 shift
和参数 periods = 2
:
df.loc[df['max'].shift(periods = 2) == 0,'true'] = 0
print df
max value true
0 0 3 0
1 0 4 0
2 0 4 0
3 0 2 0
4 3 3 0
5 3 1 0
6 3 4 3
7 3 1 1
8 3 4 3
9 3 0 0