尝试从pandas数据帧

时间:2015-09-17 16:22:58

标签: python pandas null dataframe

我正在尝试选择以某个字符串开头的所有列,然后使用新值填充所有空值。我现在正在做的只是将所有列标题转换为列表而不是。

lifestyle_var = [col for col in list(df) if col.startswith('lifestyle')]

df[lifestyle_var].fillna(1, inplace=True)

2 个答案:

答案 0 :(得分:1)

我同时遇到了同样的问题:https://github.com/pydata/pandas/issues/10342

您可以使用此命令:df.loc[:,lifestyle_var] = df.loc[:,lifestyle_var].fillna(1)

发生此问题的原因是您尝试填写数据集的副本,而不是原始数据。

答案 1 :(得分:0)

尝试

import pandas as pd
import numpy as np
data = pd.DataFrame([ [ 1, 2, np.nan ], [ np.nan, np.nan, 6] ], columns=   ['a1', 'b', 'a2'])
vars = [ col for col in list(data) if col.startswith('a')]
data.update(data[vars].fillna(value=1))

请参阅this

示例:

def vowel(word, i):
    if word[i].lower() in ['a', 'e', 'i', 'o', 'u']:
        print(True)
    else:
        print(False)