python - 如何从 pandas 数据框中列的第二个值附加到字典

标签 python pandas

我问这个问题是因为我已经坚持了一段时间,并且在这个社区或任何地方都找不到任何适当的解决方案。 我有一个 pandas 数据框,我需要在其中创建一个字典,使得列的第一个值形成第一个键值对,其余的形成其余的键值对。我的数据框看起来像这样

    created                  count
0   2016-12-31 00:00:00      34
1   2016-01-31 00:00:00      1 
2   2016-02-31 00:00:00      5

现在所需的输出是这样的

return {
'avg_active_percentage' : 79.2,
'past_trend': '39,34,23,12'
}

我已经通过使用 iloc[] 函数解决了问题的第一部分。第二部分是棘手的部分。还进行了一些计算以获得百分比值,然后将其四舍五入到最接近的小数值

a['count']= a['count']*100/total_number_users
a['count']=a['count'].round(1)
b=a['count'].iloc[0]
b=str('%.2f'% b)
result={'average_active_percentage': b}
i=1
c=[]
c=a['count'].iloc[i]
while count in a['count']:
    i=i+1
    c.append(a['count'].iloc[i].round(1))    
result['past trend']=c
result

但是我收到上面代码的错误

TypeError: unsupported operand type(s) for /: 'str' and 'int'

最佳答案

我认为你可以使用:

#cast to numeric, if problematic value replace by NaN
a['count'] = pd.to_numeric(a['count'], errors='coerce')

total_number_users = 250
#cast to string, create list with all values without first 
L = a['count'].round(1).astype(str).iloc[1:].tolist()
print (L)
['1', '5']
#create string with list
past_trend = ','.join(L)
print (past_trend)
1,5

a['count']= a['count']*100/total_number_users
a['count']=a['count'].round(1)
b=a['count'].iloc[0]
b=str('%.2f'% b)

result={'average_active_percentage': b}
#print (result)

result['past trend']=past_trend
print (result)
{'average_active_percentage': '13.60', 'past trend': '1,5'}

关于python - 如何从 pandas 数据框中列的第二个值附加到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442071/

相关文章:

python - 如何设置和使用 python 审计 Hook

python - 在Python中使用最后一次观察结果向前填充非na值

python - 如何计算整个 Pandas 数据集的成对互信息?

python - 如何将所有列与 Pandas 中的一列进行比较?

python - 简单兴趣计算器中不可避免的 while 循环

python - “LSTM”对象没有属性 '_flat_weights_names'

python - 如何使用 Python 列出进程加载的所有 dll?

python - Django - 在子路径中运行时静态文件的问题

python - 如何连接两个 ID 不匹配的数据帧并创建新列来表示数据帧 ID 的来源?

python - 无法更改特定位置数据帧的值