使用列名创建空数据帧或列表,然后按列名添加数据

2024-10-01 07:47:24 发布

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

我试图通过将我用VB编写的代码转换成python来学习python2.7。我有列名,我试图创建一个空的数据帧或列表,然后通过迭代添加行(见下文)。我不知道需要提前添加的行总数。我可以用列名创建一个dataframe,但不知道如何添加数据。我已经看过几个像我这样的问题,但是数据的行/列是事先未知的。在

代码片段:

cnames=['Security','Time','Vol_21D','Vol2_21D','MaxAPV_21D','MinAPV_21D' ]
df_Calcs = pd.DataFrame(index=range(10), columns=cnames)

这将创建空的df(df_Calcs)…然后下面的代码就是我获取数据填充行的地方……我使用n作为要插入的新行的计数器(还有20个其他列添加到行中),但是下面应该解释我要做什么。在

^{pr2}$

打印数据流计算 如果我应该使用一个列表或数组,请让我知道,我正在努力以最快最有效的方式来做这件事。然后,这些数据将被发送到MySQL db表。在

结果。。。在

  Security      Time Vol_21D Vol2_21D MaxAPV_21D MinAPV_21D
0        1  09:30:00       2        3          4          5
1        2  09:30:00       3        4          5          6
2        3  09:30:00       4        5          6          7
3        4  09:30:00       5        6          7          8
4        5  09:30:00       6        7          8          9
5      NaN       NaN     NaN      NaN        NaN        NaN
6      NaN       NaN     NaN      NaN        NaN        NaN
7      NaN       NaN     NaN      NaN        NaN        NaN
8      NaN       NaN     NaN      NaN        NaN        NaN
9      NaN       NaN     NaN      NaN        NaN        NaN

Tags: 数据代码df列表timenansecurityvb
1条回答
网友
1楼 · 发布于 2024-10-01 07:47:24

你有很多方法可以做到。在

创建空数据帧:

cnames=['Security', 'Time', 'Vol_21D', 'Vol2_21D', 'MaxAPV_21D', 'MinAPV_21D']
df = pd.DataFrame(columns=cnames)

输出:

^{pr2}$

然后,在循环中,您可以创建一个pd系列并附加到数据帧,例如:

df.append(pd.Series([1, 2, 3, 4, 5, 6], cnames), ignore_index=True)

或者你可以附加一段口述:

df.append({'Security': 1,
           'Time': 2,
           'Vol_21D': 3,
           'Vol2_21D': 4,
           'MaxAPV_21D': 5,
           'MinAPV_21D': 6
          }, ignore_index=True)

它将是相同的输出:

  Security Time Vol_21D Vol2_21D MaxAPV_21D MinAPV_21D
0        1    2       3        4          5          6

但我认为,更快速和python式的方法是:首先创建一个数组,然后将所有raw追加到数组中,然后从数组中生成数据帧。在

data = []
for i in range(0,5):
    data.append([1,2,3,4,i,6])
df = pd.DataFrame(data, columns=cnames)

我希望有帮助。在

相关问题 更多 >