<p>您需要执行四个不同的操作才能达到所需的状态。看起来您正在使用熊猫,所以我将概述一个使用熊猫的解决方案。你知道吗</p>
<ol>
<li><strong>融化</strong>大数据帧。这使您能够以类似于在excel中使用透视表的方式将列转换为行。你知道吗</li>
</ol>
<p><a href="https://stackoverflow.com/questions/34830597/pandas-melt-function">Pandas Melt Function</a></p>
<ol start=“2”>
<li><strong>合并</strong>大数据帧(使其为左侧)和小数据帧(使其为右侧)。这是一个更强大的版本的vlookup。您想使用一个<strong>左连接,它同时在<strong>时间<strong>和<strong>类<strong>上。你知道吗</li>
</ol>
<p><a href="https://stackoverflow.com/questions/53645882/pandas-merging-101">Pandas Merging 101</a></p>
<ol start=“3”>
<li><strong>聚合</strong>合并和分组的结果,按时间</strong>。我假设您想要求和,但是您可以执行许多其他聚合函数,如count、min、max。有关更多详细信息,请查看pandas文档。你知道吗</li>
</ol>
<p><a href="https://stackoverflow.com/questions/39922986/pandas-group-by-and-sum">Pandas group-by and sum</a></p>
<p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sum.html" rel="nofollow noreferrer">https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sum.html</a></p>
<ol start=“4”>
<li><strong>将数据透视成所需的结果形状。支点与熔体相反。熔化后,我们将列转换成行。使用<strong>轴,我们将行转换为列</li>
</ol>
<p><a href="https://stackoverflow.com/questions/47152691/how-to-pivot-a-dataframe?noredirect=1&lq=1">How to pivot a dataframe</a></p>
<p>下面是一个代码片段,它是按逻辑步骤编写的,不是为了获得最佳性能。希望你能走完每一步,以便更好地理解。请注意,我在csv文件中放置了标题,因此您可能需要根据导入数据的方式在数据框中声明列名。你知道吗</p>
<p><strong>大csv标题:</strong>时间,公司1,公司2,公司3,公司4,公司5</p>
<p><strong>smallCsv头文件:</strong>名称,类</p>
<pre><code>import pandas as pd
dfSmall = pd.read_csv('c:/temp/smallCsv.csv')
dfLarge = pd.read_csv('c:/temp/largeCsv.csv')
dfMeltedLarge = pd.melt(dfLarge, id_vars=['Time'], var_name='name')
dfMerged = dfMeltedLarge.merge(dfSmall, on='name', how='left')[['Time', 'class', 'value']]
dfSum = dfMerged.groupby(['Time', 'class']).sum()
dfResult = dfSum.pivot_table(index='Time', columns='class', values='value')
</code></pre>