我正在尝试创建自定义DataFrame,以表示数据中所有缺少的(NaN)值。
解决方案我想出了办法,但是在300行和50列的集合上它速度慢且效果不佳。
熊猫版本=“ 0.24.2”
class ImageProperties {
public int BrightnessPercentage { get; set; }
}
class ImageDrawer {
public int BrightnessPercentage { get; set; }
}
ImageProperties _imgProps = new ImageProperties();
ImageDrawer _imgDrawer = new ImageDrawer();
void Test() {
trackBar1.DataBindings.Add("Value", _imgProps, "BrightnessPercentage", false, DataSourceUpdateMode.OnPropertyChanged);
trackBar1.DataBindings.Add("Value", _imgDrawer, "BrightnessPercentage", false, DataSourceUpdateMode.OnPropertyChanged);
}
我觉得我在熊猫中进行迭代的方式不正确。是否有适当(或通用)的解决方案来解决此类问题?我应该以某种方式使用groupby吗?
非常感谢您的投入, 谢谢您的宝贵时间。
答案 0 :(得分: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)
答案 1 :(得分:-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