gpt4 book ai didi

python - 为什么我的 Pandas 数据框变成了 'None' 类型?

转载 作者:行者123 更新时间:2023-12-01 13:37:58 25 4
gpt4 key购买 nike

我看不出我的问题出在哪里,这个代码对于一个非常简单的例子来说工作正常,但是当我开始使用我的真实数据时,我遇到了问题。

我基本上是从各种 csv 文件中提取某些数据,并试图最终将它们组合在一个数据框中。

相关代码如下:

wavenames = ['W1_', 'W2_', 'W3_']
logs=['log1','log2','log3','log4']

for w in wavenames:
AllSynt = pd.DataFrame(index=range(6341), columns=['X']+logs)
AllSynt['X']=z # an array extracted from elsewhere
print AllSynt.head(3)
for f in files:
for l in logs:
if (f.startswith('Synthetic_'+w)) & (f.endswith(l+'.csv')):
df = pd.read_csv(path+f,delimiter=',')
AllSynt = pd.DataFrame(AllSynt)
AllSynt = AllSynt.merge(df,how='left',on='X')
AllSynt = AllSynt.rename(columns = {'Y':l}, inplace = True)
print '\n', AllSynt.head(5)

但这给了我 AttributeError: 'NoneType' object has no attribute 'head'(在循环开始时确保 AllSynt 是一个 Pandas 数据帧之前,我得到了同样的错误(只是说它没有属性“合并”)。为什么我的 AllSynt 数据帧永久变成了 None

最佳答案

您需要重写该行:
AllSynt = AllSynt.rename(columns={'Y':l}, inplace=True)
简单地说:

AllSynt.rename(columns={'Y':l}, inplace=True)  # No assigning with inplace parameter
# (or)
AllSynt = AllSynt.rename(columns={'Y':l}) # assign without inplace parameter

当您指定 inplace=True 时想看它的内容,它会返回 None因为它们只是变异了 DF而不是创建它的新副本。基本上,您正在分配 None结果,因此它提示 AttributeError因为它不是 pd.DataFrame对象不再访问它的 .head()方法。

通过执行 list.append() 可以观察到类似的类比。 , list.sort()纯python中的等操作,同时将它们的结果分配给同一行中的变量,这也将返回 None出于与他们运营相同的原因 inplace默认情况下。

编辑:添加了一个右括号。

关于python - 为什么我的 Pandas 数据框变成了 'None' 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42478887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com