Python 迭代多个数据帧的更有效方法

Python 迭代多个数据帧的更有效方法,python,pandas,Python,Pandas,我正在尝试创建自定义数据框,以表示数据中所有缺失的(NaN)值 我提出的解决方案是可行的,但对于一个包含300行和50列的集合来说,它既慢又无效 熊猫版本=“0.24.2” 我觉得我在熊猫中进行迭代的方式是不对的。这类问题有没有合适的(或通用的)解决方案?我是否应该使用groupby进行此类操作 非常感谢您的任何意见, 谢谢您的时间。您不需要迭代多个数据帧来获得结果,您确实可以使用apply: import pandas as pd data = { 'city_code' :

我正在尝试创建自定义数据框,以表示数据中所有缺失的(NaN)值

我提出的解决方案是可行的,但对于一个包含300行和50列的集合来说,它既慢又无效

熊猫版本=“0.24.2”

我觉得我在熊猫中进行迭代的方式是不对的。这类问题有没有合适的(或通用的)解决方案?我是否应该使用groupby进行此类操作

非常感谢您的任何意见,
谢谢您的时间。

您不需要迭代多个数据帧来获得结果,您确实可以使用
apply

import pandas as pd

data = {
    'city_code'     : ['Sydney2017', 'London2017', 'Sydney2018', 'London2018'],
    'population_mil': [5.441, 7.375, pd.np.nan, pd.np.nan],
    'temp': [28, pd.np.nan, 24, 25]
}

df = pd.DataFrame(data)
df.groupby('city_code').apply(lambda x: x.isna().any()).any(axis=1)

我认为可以使用isna()函数进行na检查:

df = pd.DataFrame(data)
df.assign(has_NaN=df.population_mil.isna()).drop('population_mil',1)


    city_code   has_NaN
0   Sydney2017  False
1   London2017  False
2   Sydney2018  True
3   London2018  True

请注意,OP希望检查数据集中重复多次的城市:“#“城市代码”列中存在重复项。请确保您的城市仅为唯一值。”,它们由
all_cities=list(set(data_df['city_code'])解释。
。(@Kirill chemerisin,为了清晰起见,您的示例应该包含一个在数据集中重复的城市)很抱歉,我的问题不清楚-我向您提供的数据只有两列,“城市代码”和“人口数量”,但我使用的数据集有更多的列。我要查找的是,NaN值不仅在“人口数量”列中,而且在数据集中存在的任何列中。我如何应用x.isna()。any()检查每一列,而不仅仅是“人口”?你的问题是-如何检查一个城市在任何一行的任何一列中是否有任何
pd.np.nan
(属于该城市)?是的,这就是我在寻找的答案-现在更简单了。解决了。非常感谢。
df = pd.DataFrame(data)
df.assign(has_NaN=df.population_mil.isna()).drop('population_mil',1)


    city_code   has_NaN
0   Sydney2017  False
1   London2017  False
2   Sydney2018  True
3   London2018  True