![](/img/trans.png)
[英]Get specific column after iterating over each row of pandas dataframe
[英]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.