繁体   English   中英

如何选择一列的一些值并用它们制作另一个?

[英]How to pick some values of a column and make another one with them?

这是一张类似于我正在使用的表格

      A     B   
0   12.2   43
1   10.1   32
2    3.4   34
3   12.0   55
4   40.6   31

而我正在尝试做的是获取 A 列的一些值,这些值遵循某种模式,并创建具有这些值的另一列。 例如,列 C 将只有 A 中大于 12 的值,而 D 列中的值小于或等于:

      A     B      C     D 
0   12.2   43    12.2   NaN 
1   10.1   32     NaN   10.1
2    3.4   34     NaN   3.4 
3   12.0   55     NaN   12.0
4   40.6   31    40.6   NaN

我尝试为每组值制作一个列表,但我无法将它们与原始表合并,因为有些数字重复并且列数增加。 我认为有一种更简单的方法可以做到这一点,但我似乎找不到。 我怎样才能做到这一点?

还有另一个版本:

df['C'] = df.loc[df.A > 12, 'A']
df['D'] = df.loc[df.A <= 12, 'A']

print(df)

印刷:

      A   B     C     D
0  12.2  43  12.2   NaN
1  10.1  32   NaN  10.1
2   3.4  34   NaN   3.4
3  12.0  55   NaN  12.0
4  40.6  31  40.6   NaN

不是mask吗? where

mask = df['A']>12
df['C'] = df['A'].where(mask)
df['D'] = df['A'].mask(mask)

Output:

      A   B     C     D
0  12.2  43  12.2   NaN
1  10.1  32   NaN  10.1
2   3.4  34   NaN   3.4
3  12.0  55   NaN  12.0
4  40.6  31  40.6   NaN

让我们试试np.where

df['C']=np.where(df.A>12,df.A,np.nan)
df['D']=np.where(df.A<=12,df.A,np.nan)
df
      A   B     C     D
0  12.2  43  12.2   NaN
1  10.1  32   NaN  10.1
2   3.4  34   NaN   3.4
3  12.0  55   NaN  12.0
4  40.6  31  40.6   NaN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM