繁体   English   中英

如何在不重复每一行的情况下访问pandas数据框中的值

[英]how to access values in a pandas dataframe without iterating over each row

假设我有一个具有1000行和10列的Pandas Dataframe。

有5个标记为i1至i5的整数列和5个字符串列。

如何创建一个名为DIFF的新列,定义为

MAX(i1,i2,i3,i4,i5) - MIN(i1,i2,i3,i4,i5)

我在使用Max和Min运算符时遇到了麻烦,因为我没有干净地访问值-被Series搞砸了。 在网上看到的其他例子中,人们在做

mydf.iloc[x]['SOME_COL'] 

要获取单元格的值,但在此示例中,我不想遍历行,我只想一次为每一行计算新列。

假设数字列是前5个,则可以使用以下方法获得所需的列:

df.ix[:, 0:5].max(axis=1) - df.ix[:, 0:5].min(axis=1)

如果您真正感兴趣的是采用数值列的最大值-最小值,则只需找出哪些列是数值列 ,然后对它们进行最大值-最小值即可。 像这样:

>> df
   i1  i2  i3  i4  i5 str_col_1 str_col_2
0   1   2   3   4   5         a         b
1   1   2   3   4   5         a         b
2   1   2   3   4   5         a         b
3   1   2   3   4   5         a         b
4   1   2   3   4   5         a         b

>> numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
>> numeric_cols = df.select_dtypes(include=numerics)
>> numeric_cols.max(axis=1) - numeric_cols.min(axis=1)

0    4
1    4
2    4
3    4
4    4
dtype: int64

暂无
暂无

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

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