Pandas: 基於列名將循環中的值映射到新的DataFrame中

2024-04-19 07:36:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下测向:

A  B  C
1  3  2 
2  1  10

我现在编写了一个函数,循环遍历每一列来回归C上的每一列,目的是将每列回归的t-stat存储在映射到列名的单独数据帧中。代码如下:

^{pr2}$

问题在于命令:

 t_stats[column] = results[0]/results[1]

我希望从results元组中计算出的t统计量存储在根据for循环中当前活动的列命名的列中。但是,t-stat dataframe有来自df的列名,但是它是空的,即t-statistics根本没有保存在那里。我做错什么了?在

所需输出t_stat数据帧:

A                              B                                   C
value of regression A on C   value of regression B on C            value of regression C on C

Tags: of数据函数代码命令目的valueon
1条回答
网友
1楼 · 发布于 2024-04-19 07:36:53
t_stats = pd.DataFrame(data = None, columns= df.columns)

构建一个包含三列且零行的数据帧。在

^{pr2}$

用标量值results[0]/results[1]填充column列中的每一行。 因为没有行,所以没有数据添加到t_stats。在

因此,将数据收集到dict中,在收集完所有数据后,将dict转换为DataFrame:

import pandas as pd
df = pd.DataFrame({'A':[1,2], 'B':[3,1], 'C':[2,10]})
data = dict()
x = df["C"]
for column in df: 
    y=df[column]
    # results = fit_line(x,y) # fit line is a reg function defined somewhere else
    results = [1,2]
    data[column] = results[0]/results[1]
t_stats = pd.DataFrame([data])
print(t_stats)

收益率

     A    B    C
0  0.5  0.5  0.5

注意data有许多格式可以转换为数据帧。 在上面,我使用了一个dicts列表。因为只有一行,所以列表只包含一个dict。或者,您可以传递列表的dict:

import pandas as pd
df = pd.DataFrame({'A':[1,2], 'B':[3,1], 'C':[2,10]})
data = dict()
x = df["C"]
for column in df: 
    y=df[column]
    results = [1,2]
    data[column] = [results[0]/results[1]]  # <  dict of lists
t_stats = pd.DataFrame(data)                # note, no more brackets around data
print(t_stats)

产生同样的结果。在

相关问题 更多 >