Python 如何动态访问新的数据帧(数据帧)?

Python 如何动态访问新的数据帧(数据帧)?,python,pandas,Python,Pandas,我有一个关于熊猫管道的问题 例如,我想将一个宽表转换为一个长表 我采取的步骤是:(a).T和(b).reset_index()以获得所需的形状,但我还需要(c)填充缺少的值(表中有合并的单元格)和(d)设置适当的标题 我想知道的是,我是否可以在一个管道中完成所有工作,特别是,我是否可以引用一个新创建的表(在.T等之后),该表在这个管道中没有名称 样本: 数据={ '变量':{0:'var1',1:'var2',2:'var3',3:'var4'}, “状态1”:{0:2019.0,1:np.na

我有一个关于熊猫管道的问题

例如,我想将一个宽表转换为一个长表

我采取的步骤是:(a)
.T
和(b)
.reset_index()
以获得所需的形状,但我还需要(c)填充缺少的值(表中有合并的单元格)和(d)设置适当的标题

我想知道的是,我是否可以在一个管道中完成所有工作,特别是,我是否可以引用一个新创建的表(在
.T
等之后),该表在这个管道中没有名称

样本:

数据={
'变量':{0:'var1',1:'var2',2:'var3',3:'var4'},
“状态1”:{0:2019.0,1:np.nan,2:np.nan,3:np.nan},
'未命名:2':{0:2020.0,1:np.nan,2:np.nan,3:np.nan},
“状态2”:{0:2019.0,1:np.nan,2:np.nan,3:np.nan},
'未命名:4':{0:2020.0,1:np.nan,2:np.nan,3:np.nan}
}
df=pd.DataFrame(数据)
工作代码:

结果=(
df
T
.reset_index()
.replace(“^Unnamed”,np.nan,regex=True)
)
#我拆分它是因为我无法访问'index'
结果=(
结果
.assign(index=result[“index”].ffill())
.rename(columns=result.iloc[0])
.drop(结果索引[0])
)
尝试立即获取所有内容:

结果=(
df
T
.reset_index()
.replace(“^Unnamed”,np.nan,regex=True)
#这是我需要引用专栏的地方
#从这个现在已转换的表
#没有名称。引用df会出错
.assign(df[“index”].ffill())
.rename(columns=df.iloc[0])
.drop(测向索引[0])
)

因此,这个问题更多的是关于如何一次完成所有工作,而不是如何转换表(这只是一个示例)。

这是通过管道实现结果的一种方法-只是对代码进行一些小的调整:

(df
 .T
 .set_axis(df.iloc[:, 0], axis=1)
 .iloc[1:]
 .reset_index()
 .rename(columns={"index":"Variables"})
 .rename_axis(columns=None)
 .replace("^Unnamed", np.nan, regex=True)
 .ffill())

Variables   var1    var2    var3    var4
0   State 1 2019.0  NaN NaN NaN
1   State 1 2020.0  NaN NaN NaN
2   State 2 2019.0  NaN NaN NaN
3   State 2 2020.0  NaN NaN NaN

示例数据集将有助于更好地理解您试图实现的目标。您需要在
assign()
中使用lambda函数,如果没有示例数据,则无法给出完整的解决方案
.assign(index=lambda-dfa:dfa[“index”].ffill())
@sammywemmy添加了样本数据。代码给了我想要的输出,我只是好奇我是否能同时做到这一切希望它解决了你的挑战。当然,您必须检查效率和速度