大家好,在 stackoverflow!我的问题是:我想从 imdb 中读取 csv 文件,合并并添加结果,然后将它们给出。 我可以添加带有计算的新行,例如将 averageRating 除以 10 或类似的值 - 效果很好。
但目标是根据得票数对数据进行分类。代码是这样的:
导入numpy
将熊猫导入为 pd
导入时间
df1 = pd.read_csv('imdb_title.csv', sep=' ')
df2 = pd.read_csv('imdb_ratings.csv', sep=' ')
output_csv = 'imdb_result.csv'
df = df1.merge(df2, how='outer')
df = df[df.titleType == '电影']
我在 df.numVotes:
如果我<= 5000:
j = 5.9
elif我<= 25000:
j = 6.6
...
elif我<= 1000000:
j = 8.2
其他:
j = 8.4
df['estRate'] = j
打印(i,j)
df.to_csv(output_csv, sep=';')
"print(i, j)" 会给出正确答案,但输出文件不会。
想要的例子与结果
|票数|结果|投票数|结果|
| 30670.0| 7.2 | 30670.0 |6.6 |
| 04774.0| 5.9 | 04774.0| 6.6|
| 20876.0| 6.6 |20876.0| 6.6|
搜索和阅读大量文章后,我尝试更改斜体行:
df['estRate'] = j.copy() 但我收到错误消息“AttributeError: 'float' object has no attribute 'copy'”
然后我尝试使用复制方法
"df['estRate'] = copy.copy(j)" --> 这正在运行但没有效果。
结果的最后一个值(6.6)仍然是写入 csv 表中任何一行的值。
我知道数据帧中的处理是不同的,这就是我必须使用复制方法来确保它是被识别的时间值的原因。
另一种尝试是在打开的文件中附加日期...
“df.to_csv(output_csv, sep=';', mode='a', header=False)”
但这将导致行数增加 n 倍(同时是 for... 循环的一部分)或只是最后一行,如前所述。 我需要的是只写 df 的第一、第二、第三行。
我尝试了索引,我列举了...... 然后 “index.to_csv”……这会导致错误“‘int’对象没有属性‘to_csv’”
或 df[index] 或类似的东西,但这也会导致硬错误。
可能有人对我有建议,我尝试了很长时间和不同的建议,但在我的情况下似乎没有任何效果。