我有一个包含5个元素的计数列表。
counts = [33, 35, 17, 38, 29]
Run Code Online (Sandbox Code Playgroud)
此计数列表每天都会更新新的数字。因此,我想创建一个数据框,并将计数数据每天追加为新行。列表的每个元素应出现在数据框中的单独列中。我想做的是以下几点:
df = pd.DataFrame(columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
df = df.append(counts)
Run Code Online (Sandbox Code Playgroud)
但是它没有添加计数数据作为一行,而是添加了一个新列。任何有关如何正确执行此操作的帮助?
假设第0天的计数是[33、35、17、38、29],而第1天的计数是[30、36、20、34、32],我想要的是以下输出:
w1 w2 w3 w4 w5
0 33 35 17 38 29
1 30 36 20 34 32
Run Code Online (Sandbox Code Playgroud)
其中index代表进行计数的日期。有什么帮助吗?
如果你知道day0,并day1在开始的时候,那么你想为jezrael提出构建它。
但我假设您希望能够在循环中添加新行。
loc使用时,loc您需要使用尚不存在的索引值。在这种情况下,我假设我们正在维护一个通用的RangeIndex. 如果是这种情况,我将假设下一个索引与当前 DataFrame 的长度相同。
df.loc[len(df), :] = counts
df
w1 w2 w3 w4 w5
0 33 35 17 38 29
Run Code Online (Sandbox Code Playgroud)
让我们制作循环。
day0 = [33, 35, 17, 38, 29]
day1 = [30, 36, 20, 34, 32]
for counts in [day0, day1]:
df.loc[len(df), :] = counts
df
w1 w2 w3 w4 w5
0 33.0 35.0 17.0 38.0 29.0
1 30.0 36.0 20.0 34.0 32.0
Run Code Online (Sandbox Code Playgroud)
可以追加到DataFrame,但是由于行数很慢,因此最好创建列表列表DataFrame并由构造器创建:
counts = [33, 35, 17, 38, 29]
counts1 = [37, 8, 1, 2, 0]
L = [counts, counts1]
df = pd.DataFrame(L, columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
print (df)
w1 w2 w3 w4 w5
0 33 35 17 38 29
1 37 8 1 2 0
Run Code Online (Sandbox Code Playgroud)
但是如果需要的话,例如每天只添加一行,那么有必要Series使用相同的索引值创建columns:
df = pd.DataFrame(columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
counts = [33, 35, 17, 38, 29]
s = pd.Series(counts, index=df.columns)
df = df.append(s, ignore_index=True)
print (df)
w1 w2 w3 w4 w5
0 33 35 17 38 29
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5942 次 |
| 最近记录: |