遍历数据框

时间:2019-12-02 07:02:28

标签: python pandas dataframe

我以这个数据框为例:

import pandas as pd
df = pd.DataFrame({'country':['china','canda','usa' ], 'value':[1000, 850, 1100], 'fact':[1000,200,850]})
df.index=df['country']
df = df.drop('country', axis=1)

我想遍历每个国家的GDP,并希望在此迭代中创建一个新列,该列根据条件的条件充满1或0:

for x in df['value']:
    if x > 900:
        df['answer']=1
    else:
        df['answer']=0

我希望一列具有以下值:

[1,0,1]

因为加拿大的价值低于900。

但是相反,我有一列充满了。

怎么了?

2 个答案:

答案 0 :(得分:1)

甚至无需使用以下命令就可以遍历每一行:

df['answer'] = df['value'].apply(lambda value: 1 if value > 900 else 0)

编辑,您正在为df['answer']分配一些值。最后一个值是 1 ,这就是为什么将 1 应用于整个 answer 列而不是特定行的原因。

答案 1 :(得分:1)

使用np.where

df["answer"] = np.where(df["value"]> 900, 1,0)

df["answer"] = (df["value"]> 900).astype(int)

输出:

         value  fact    answer
country         
china     1000  1000    1
canda     850   200     0
usa       1100  850     1

您的代码有什么问题

执行df['answer']=1时,表达式将answer列中的所有行分配1。

因此最后一个评估值分配给该列