为什么 std 为 1 列而其他列为 nan?
why having std for 1 column and others are nan?
我有 DataFrame 看起来像这样但形状 (345,5) 像这样
|something1| something2| numbers1| number2 |number3|
|----------|------------|----------|---------|-------|
| A | str | 45 | nan |nan |
|B | str2 | 6 | nan | nan |
| c | str3 | 34 | 67 | 45 |
|D | str4 | 56 | 45 | 23 |
我只想通过我的手动 std 函数获取数字列的 std 并保存在字典中,问题是我只得到第一列的结果:
{'number1': 18.59267328815305,
'number2': nan,
'number3': nan,
'number4': nan}
这是我的代码:
std = {column:std_func(df[column].values) for column in df.columns}
Pandas 可以解决这个问题,试试
df[['numbers1', 'numbers2', 'numbers3']].std()
默认情况下跳过 NaN:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html
如果你想在字典中使用这个,那么做:
df[['numbers1', 'numbers2', 'numbers3']].std().to_dict()
编辑:如果您对专门使用您的自定义标准偏差函数毫无兴趣,只需在应用前从列中删除:
std = {column:std_func(df[column].dropna().values) for column in df.columns}
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dropna.html
我有 DataFrame 看起来像这样但形状 (345,5) 像这样
|something1| something2| numbers1| number2 |number3|
|----------|------------|----------|---------|-------|
| A | str | 45 | nan |nan |
|B | str2 | 6 | nan | nan |
| c | str3 | 34 | 67 | 45 |
|D | str4 | 56 | 45 | 23 |
我只想通过我的手动 std 函数获取数字列的 std 并保存在字典中,问题是我只得到第一列的结果:
{'number1': 18.59267328815305,
'number2': nan,
'number3': nan,
'number4': nan}
这是我的代码:
std = {column:std_func(df[column].values) for column in df.columns}
Pandas 可以解决这个问题,试试
df[['numbers1', 'numbers2', 'numbers3']].std()
默认情况下跳过 NaN: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html
如果你想在字典中使用这个,那么做:
df[['numbers1', 'numbers2', 'numbers3']].std().to_dict()
编辑:如果您对专门使用您的自定义标准偏差函数毫无兴趣,只需在应用前从列中删除:
std = {column:std_func(df[column].dropna().values) for column in df.columns}
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dropna.html