【发布时间】:2015-02-13 00:15:05
【问题描述】:
以此为起点:
a = [['10', '1.2', '4.2'], ['15', '70', '0.03'], ['8', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
Out[8]:
one two three
0 10 1.2 4.2
1 15 70 0.03
2 8 5 0
我想在 pandas 中使用类似 if 的语句。
if df['one'] >= df['two'] and df['one'] <= df['three']:
df['que'] = df['one']
基本上,通过if 语句检查每一行,创建新列。
文档说要使用.all,但没有示例...
【问题讨论】:
-
如果
if语句是False,值应该是多少? -
@Merlin:如果列中有数字数据,最好不要与字符串混合。这样做会将列的 dtype 更改为
object。这允许将任意 Python 对象存储在列中,但其代价是数值计算速度较慢。因此,如果该列存储数字数据,则最好将 NaN 用于非数字。 -
将整数作为字符串并尝试对它们进行比较看起来很奇怪:
a = [['10', '1.2', '4.2'], ['15', '70', '0.03'], ['8', '5', '0']]。这会使用“正确”代码产生令人困惑的结果:df['que'] = df['one'][(df['one'] >= df['two']) & (df['one'] <= df['three'])]在第一行产生10,而如果输入是整数,它应该产生NaN。
标签: python pandas if-statement dataframe