回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>初学者熊猫/循环问题在这里</p>
<h2>如何为所有列创建和合并透视表创建For循环?在</h2>
<p>考虑这个df(实际数据集类似于50个估计列;我在这里简化为4个):</p>
<pre><code>import numpy as np
import pandas as pd
raw_data = {'Year': [2009, 2009, 2010, 2010, 2010, 2010],
'Quarter': [4, 4, 1, 1, 2, 2],
'Sector': ['GPU', 'GPU', 'Gaming', 'Gaming', 'Gaming', 'Gaming'],
'Ticker': ['NVID', 'NVID', 'ATVI', 'ATVI', 'ATVI', 'ATVI'],
'Metric': ['EPS', 'REV', 'EPS', 'REV', 'EPS', 'REV'],
'Estimate 1': [1.4, 350, 0.2, 500, 0.9, 120],
'Estimate 2': [1.2, 375, 0.22, 505, 1.0, 120],
'Estimate 3': [2.1, 250, 0.2, 510, 0.8, 120],
'Estimate 4': [1.4, 360, 0, 400, 1.9, 125],}
df = pd.DataFrame(raw_data, columns = ['Year','Quarter', 'Sector','Ticker', 'Metric','Estimate 1','Estimate 2','Estimate 3', 'Estimate 4'])
print(df)
</code></pre>
<p>期望输出-我正在寻找这样的测向:</p>
^{pr2}$
<p>我可以通过使用<code>pd.pivot()</code>和<code>pd.merge</code>单独完成这项工作,但不确定如何构造这是一个for循环。在</p>
<pre><code>feature_names=('Year','Quarter','Sector','Ticker')
not_feature_names=['Metric','Estimate 1','Estimate 2','Estimate 3', 'Estimate 4']
df_pivot=df.drop(not_feature_names, axis=1)
df_pivot1 = df.pivot_table(index=feature_names,
columns='Metric',
values='Estimate 1',)
df_pivot1 = df_pivot1.reset_index().rename_axis(None, axis=1)
df_pivot1.rename(columns={'EPS': 'EPS_1', 'REV':'REV_1'}, inplace=True)
df_Full=df_pivot1.merge(df_pivot, on=(feature_names), suffixes=('_l', '_r'))
print(df_Full)
</code></pre>
<p>我在这里的循环:</p>
<pre><code>for (name, i) in zip(not_feature_names, range(1, 4)):
df_pivot1 = df.pivot_table(index=feature_names,
columns='Metric',
values=name,)
df_pivot1 = df_pivot1.reset_index().rename_axis(None, axis=1)
df_pivot1.rename(columns={'EPS': ('EPS_'+i), 'REV':('REV_'+i)}, inplace=True)
df_Full=df_pivot1.merge(df_pivot, on=(feature_names), suffixes=('_l', '_r')
</code></pre>