我正在尝试选择以某个字符串开头的所有列,然后使用新值填充所有空值。我现在正在做的只是将所有列标题转换为列表而不是。
lifestyle_var = [col for col in list(df) if col.startswith('lifestyle')]
df[lifestyle_var].fillna(1, inplace=True)
答案 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)