Pandas dataframe 只在循环中写入最后一个值

问题描述 投票:0回答:0

大家好,在 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] 或类似的东西,但这也会导致硬错误。

可能有人对我有建议,我尝试了很长时间和不同的建议,但在我的情况下似乎没有任何效果。

python pandas dataframe export-to-csv
© www.soinside.com 2019 - 2024. All rights reserved.