Python3.6-将输出作为新列添加到dataframe,然后输出到excel

Python3.6-将输出作为新列添加到dataframe,然后输出到excel,python,dictionary,dataframe,Python,Dictionary,Dataframe,我需要从excel文件中获得按县划分的3种最大商品,然后依次将这些结果输出到excel中的一个新列。 在这个论坛的帮助下,我完成了排序,但似乎不知道如何将其导出到excel——我试图创建一个新的数据框列,然后将数据框写入excel,但如果有更直接的方法,我将不胜感激 df = pd.read_excel('abc.xlsx') d = df.set_index('county').to_dict('index') for k, v in d.items(): i = sorted(v.

我需要从excel文件中获得按县划分的3种最大商品,然后依次将这些结果输出到excel中的一个新列。 在这个论坛的帮助下,我完成了排序,但似乎不知道如何将其导出到excel——我试图创建一个新的数据框列,然后将数据框写入excel,但如果有更直接的方法,我将不胜感激

df = pd.read_excel('abc.xlsx')
d = df.set_index('county').to_dict('index')

for k, v in d.items():
    i = sorted(v.items(), key = lambda x: x[1], reverse=True)
    print([k, ', '.join([f'{com}: {value}' for, value in i[0:3]])]) 
我最终想弄清楚如何更改打印行,以便将3大商品及其价值输出到excel。我附上了当前数据结构的图像,以及我想要它的样子

这是包含前几行数据的字典-希望这有助于:

{1001: {'CATTLE_USDA_VALUE': 5988000.0, 'CORN_USDA_VALUE': 460000.0, 'COTTON_USDA_VALUE': 5465000.0, 'DAIRY_USDA_VALUE': 0.0, 'HOGS_USDA_VALUE': 3000.0, 'POULTRY_USDA_VALUE': 0.0, 'SOYBEANS_USDA_VALUE': 664000.0, 'WHEAT_USDA_VALUE': 679000.0, 'TOTAL_USDA_VALUE': 19811000.0, 'CATTLE_USDA_Share': 0.30225632224521731, 'CORN_USDA_SHARE': 0.023219423552571804, 'COTTON_USDA_SHARE': 0.2758568472060976, 'DAIRY_USDA_SHARE': 0.0, 'HOGS_USDA_SHARE': 0.00015143102316894655, 'POULTRY_USDA_SHARE': 0.0, 'SOYBEANS_USDA_SHARE': 0.033516733128060167, 'WHEAT_USDA_SHARE': 0.034273888243904899, 'CATTLE_FDIC_SHARE': 0.0, 'CATTLE_REPORTING_SHARE': 0.0, 'CORN_FDIC_SHARE': 0.0, 'CORN_REPORTING_SHARE': 0.0, 'COTTON_FDIC_SHARE': 0.0, 'COTTON_REPORTING_SHARE': 0.0, 'DAIRY_FDIC_SHARE': 0.0, 'DAIRY_REPORTING_SHARE': 0.0, 'HOGS_FDIC_SHARE': 0.0, 'HOGS_REPORTING_SHARE': 0.0, 'POULTRY_FDIC_SHARE': 36.031179424999898, 'POULTRY_REPORTING_SHARE': 74.074074074099897, 'SOYBEANS_FDIC_SHARE': 0.0, 'SOYBEANS_REPORTING_SHARE': 0.0, 'WHEAT_FDIC_SHARE': 0.0, 'WHEAT_REPORTING_SHARE': 0.0}, 1003: {'CATTLE_USDA_VALUE': 0.0, 'CORN_USDA_VALUE': 3818000.0, 'COTTON_USDA_VALUE': 7344000.0, 'DAIRY_USDA_VALUE': 220000.0, 'HOGS_USDA_VALUE': 4000.0, 'POULTRY_USDA_VALUE': 0.0, 'SOYBEANS_USDA_VALUE': 8977000.0, 'WHEAT_USDA_VALUE': 3680000.0, 'TOTAL_USDA_VALUE': 135562000.0, 'CATTLE_USDA_Share': 0.0, 'CORN_USDA_SHARE': 0.028164234815066171, 'COTTON_USDA_SHARE': 0.05417447367256311, 'DAIRY_USDA_SHARE': 0.001622873666661749, 'HOGS_USDA_SHARE': 2.9506793939304526e-05, 'POULTRY_USDA_SHARE': 0.0, 'SOYBEANS_USDA_SHARE': 0.066220622298284182, 'WHEAT_USDA_SHARE': 0.027146250424160162, 'CATTLE_FDIC_SHARE': 12.3912520289, 'CATTLE_REPORTING_SHARE': 82.142857142899899, 'CORN_FDIC_SHARE': 0.0, 'CORN_REPORTING_SHARE': 0.0, 'COTTON_FDIC_SHARE': 0.0, 'COTTON_REPORTING_SHARE': 0.0, 'DAIRY_FDIC_SHARE': 0.0, 'DAIRY_REPORTING_SHARE': 0.0, 'HOGS_FDIC_SHARE': 0.0, 'HOGS_REPORTING_SHARE': 0.0, 'POULTRY_FDIC_SHARE': 32.076141693899899, 'POULTRY_REPORTING_SHARE': 75.0, 'SOYBEANS_FDIC_SHARE': 0.0, 'SOYBEANS_REPORTING_SHARE': 0.0, 'WHEAT_FDIC_SHARE': 0.0, 'WHEAT_REPORTING_SHARE': 0.0}, 1005: {'CATTLE_USDA_VALUE': 5581000.0, 'CORN_USDA_VALUE': 1324000.0, 'COTTON_USDA_VALUE': 4904000.0, 'DAIRY_USDA_VALUE': 0.0, 'HOGS_USDA_VALUE': 0.0, 'POULTRY_USDA_VALUE': 83809000.0, 'SOYBEANS_USDA_VALUE': 0.0, 'WHEAT_USDA_VALUE': 0.0, 'TOTAL_USDA_VALUE': 104356000.0, 'CATTLE_USDA_Share': 0.05348039403580053, 'CORN_USDA_SHARE': 0.012687339491739814, 'COTTON_USDA_SHARE': 0.046992985549465294, 'DAIRY_USDA_SHARE': 0.0, 'HOGS_USDA_SHARE': 0.0, 'POULTRY_USDA_SHARE': 0.80310667331059071, 'SOYBEANS_USDA_SHARE': 0.0, 'WHEAT_USDA_SHARE': 0.0, 'CATTLE_FDIC_SHARE': 0.0, 'CATTLE_REPORTING_SHARE': 0.0, 'CORN_FDIC_SHARE': 0.0, 'CORN_REPORTING_SHARE': 0.0, 'COTTON_FDIC_SHARE': 0.0, 'COTTON_REPORTING_SHARE': 0.0, 'DAIRY_FDIC_SHARE': 0.0, 'DAIRY_REPORTING_SHARE': 0.0, 'HOGS_FDIC_SHARE': 0.0, 'HOGS_REPORTING_SHARE': 0.0, 'POULTRY_FDIC_SHARE': 0.0, 'POULTRY_REPORTING_SHARE': 0.0, 'SOYBEANS_FDIC_SHARE': 1.5549794663100001, 'SOYBEANS_REPORTING_SHARE': 64.2201834862, 'WHEAT_FDIC_SHARE': 1.0388869362099999, 'WHEAT_REPORTING_SHARE': 60.550458715600001}, 1007: {'CATTLE_USDA_VALUE': 1924000.0, 'CORN_USDA_VALUE': 0.0, 'COTTON_USDA_VALUE': 0.0, 'DAIRY_USDA_VALUE': 0.0, 'HOGS_USDA_VALUE': 0.0, 'POULTRY_USDA_VALUE': 0.0, 'SOYBEANS_USDA_VALUE': 0.0, 'WHEAT_USDA_VALUE': 0.0, 'TOTAL_USDA_VALUE': 0.0, 'CATTLE_USDA_Share': 0.0, 'CORN_USDA_SHARE': 0.0, 'COTTON_USDA_SHARE': 0.0, 'DAIRY_USDA_SHARE': 0.0, 'HOGS_USDA_SHARE': 0.0, 'POULTRY_USDA_SHARE': 0.0, 'SOYBEANS_USDA_SHARE': 0.0, 'WHEAT_USDA_SHARE': 0.0, 'CATTLE_FDIC_SHARE': 0.0, 'CATTLE_REPORTING_SHARE': 0.0, 'CORN_FDIC_SHARE': 3.70720825635, 'CORN_REPORTING_SHARE': 71.604938271600005, 'COTTON_FDIC_SHARE': 0.0, 'COTTON_REPORTING_SHARE': 0.0, 'DAIRY_FDIC_SHARE': 0.0, 'DAIRY_REPORTING_SHARE': 0.0, 'HOGS_FDIC_SHARE': 0.0, 'HOGS_REPORTING_SHARE': 0.0, 'POULTRY_FDIC_SHARE': 43.716573955800001, 'POULTRY_REPORTING_SHARE': 77.777777777799898, 'SOYBEANS_FDIC_SHARE': 4.7009247847799998, 'SOYBEANS_REPORTING_SHARE': 61.728395061699899, 'WHEAT_FDIC_SHARE': 0.0, 'WHEAT_REPORTING_SHARE': 0.0}, 1009: {'CATTLE_USDA_VALUE': 11721000.0, 'CORN_USDA_VALUE': 831000.0, 'COTTON_USDA_VALUE': 1203000.0, 'DAIRY_USDA_VALUE': 0.0, 'HOGS_USDA_VALUE': 28000.0, 'POULTRY_USDA_VALUE': 153682000.0, 'SOYBEANS_USDA_VALUE': 1490000.0, 'WHEAT_USDA_VALUE': 0.0, 'TOTAL_USDA_VALUE': 178191000.0, 'CATTLE_USDA_Share': 0.065777732882132095, 'CORN_USDA_SHARE': 0.0046635351953802379, 'COTTON_USDA_SHARE': 0.0067511827196659767, 'DAIRY_USDA_SHARE': 0.0, 'HOGS_USDA_SHARE': 0.00015713475989247492, 'POULTRY_USDA_SHARE': 0.86245657749269045, 'SOYBEANS_USDA_SHARE': 0.0083618140085638445, 'WHEAT_USDA_SHARE': 0.0, 'CATTLE_FDIC_SHARE': 0.0, 'CATTLE_REPORTING_SHARE': 0.0, 'CORN_FDIC_SHARE': 0.0, 'CORN_REPORTING_SHARE': 0.0, 'COTTON_FDIC_SHARE': 0.0, 'COTTON_REPORTING_SHARE': 0.0, 'DAIRY_FDIC_SHARE': 0.0, 'DAIRY_REPORTING_SHARE': 0.0, 'HOGS_FDIC_SHARE': 0.0, 'HOGS_REPORTING_SHARE': 0.0, 'POULTRY_FDIC_SHARE': 0.0, 'POULTRY_REPORTING_SHARE': 0.0, 'SOYBEANS_FDIC_SHARE': 0.0, 'SOYBEANS_REPORTING_SHARE': 0.0, 'WHEAT_FDIC_SHARE': 0.0, 'WHEAT_REPORTING_SHARE': 0.0}}
然后,我需要一个额外的列,按三个最大的数据点排序,以便第一行与底部图像匹配。

试试看

import pandas as pd

# you do here pd.read_excel('abc.xlsx')
cols = list('ABCD')
df = pd.DataFrame(pd.np.random.randint(0,1000,size=(10, 4)), columns=cols)
# set all but the largest 3 to 0
for c in cols:
    df.at[df[c].nsmallest(df.shape[0] - 3).index, c] = 0
df.to_excel(output.xlsx')

你能提供一份工作吗?在这里,这意味着没有图像/链接,只有文本。一些示例输出也会很好。JPP-我如何才能更好地展示这一点?我认为展示图片是展示我需要的最简单的方式。你希望我把每一行都放到一个列表或字典里,这样你就可以很容易地把它复制到你的机器上吗?你的直觉是正确的。更多建议:.user1889297-这并不能满足我的需要。我需要知道商品名称,然后是数字,我希望它出现在数据的最后一列。你能调整它以匹配图像中显示的内容吗?我想出来了-我做了如下-我创建了一个名为“y”的空白列表-然后我将最后一行附加到y,而不是打印出来。然后,我将一个名为data的新df列设置为=y--->df['data']=y。现在我可以将数据框写入excel。