Python 从现有数据帧创建新数据帧而不丢失值

Python 从现有数据帧创建新数据帧而不丢失值,python,pandas,Python,Pandas,我坚持完成一项很明显的任务 我有一个数据缺失的df。为了处理此类数据,我想测试两个数据帧 data = pd.read_csv('data.csv') X_real_zeros = data for col in numeric_cols: X_real_zeros[col] = data[col].fillna(0) X_real_means = data a = calculate_means(data[numeric_cols]) for col in numeric_cols:

我坚持完成一项很明显的任务

我有一个数据缺失的df。为了处理此类数据,我想测试两个数据帧

data = pd.read_csv('data.csv')
X_real_zeros = data
for col in numeric_cols:
    X_real_zeros[col] = data[col].fillna(0)

X_real_means = data
a = calculate_means(data[numeric_cols])
for col in numeric_cols:
    print(a[col], col)
    X_real_means[col] = data[col].fillna(a[col])
对于第一个
X_real_zero
,我将missing替换为0。 对于第二个
X\u real\u的意思是
——用列的平均值

我已在一个数组中收集了所有数字列名称

numeric_cols = ['RFCD.Percentage.1', 'RFCD.Percentage.2', 'RFCD.Percentage.3', 
                'RFCD.Percentage.4', 'RFCD.Percentage.5',
                'SEO.Percentage.1', 'SEO.Percentage.2', 'SEO.Percentage.3',
                'SEO.Percentage.4', 'SEO.Percentage.5',
                'Year.of.Birth.1', 'Number.of.Successful.Grant.1', 'Number.of.Unsuccessful.Grant.1']
然后我尝试创建两个数据帧

data = pd.read_csv('data.csv')
X_real_zeros = data
for col in numeric_cols:
    X_real_zeros[col] = data[col].fillna(0)

X_real_means = data
a = calculate_means(data[numeric_cols])
for col in numeric_cols:
    print(a[col], col)
    X_real_means[col] = data[col].fillna(a[col])
但是,当我想创建第二个时,我的
数据
数据框被修改了。无论如何,我认为我的方法不准确,解决此类任务的正确方法是什么?

使用

X_real_means = data.copy()
否则,变量
X\u real\u表示
将引用与
数据
完全相同的对象

在这里回答了一个类似的问题:


更改后的总体代码如下所示:

data = pd.read_csv('data.csv')
X_real_zeros = data.copy()
for col in numeric_cols:
    X_real_zeros[col] = data[col].fillna(0)

X_real_means = data.copy()
a = calculate_means(data[numeric_cols])
for col in numeric_cols:
    print(a[col], col)
    X_real_means[col] = data[col].fillna(a[col])
data = pd.read_csv('data.csv')
X_real_zeros = data.copy()
for col in numeric_cols:
    X_real_zeros[col] = data[col].fillna(0)

X_real_means = data.copy()
a = calculate_means(data[numeric_cols])
for col in numeric_cols:
    print(a[col], col)
    X_real_means[col] = data[col].fillna(a[col])
使用

否则,变量
X\u real\u表示
将引用与
数据
完全相同的对象

在这里回答了一个类似的问题:


更改后的总体代码如下所示:

data = pd.read_csv('data.csv')
X_real_zeros = data.copy()
for col in numeric_cols:
    X_real_zeros[col] = data[col].fillna(0)

X_real_means = data.copy()
a = calculate_means(data[numeric_cols])
for col in numeric_cols:
    print(a[col], col)
    X_real_means[col] = data[col].fillna(a[col])
data = pd.read_csv('data.csv')
X_real_zeros = data.copy()
for col in numeric_cols:
    X_real_zeros[col] = data[col].fillna(0)

X_real_means = data.copy()
a = calculate_means(data[numeric_cols])
for col in numeric_cols:
    print(a[col], col)
    X_real_means[col] = data[col].fillna(a[col])

我想这就是你需要做的:


我想这就是你需要做的: