假设我们有一个像这样的数据框
df = pd.DataFrame(columns=['A', 'B','C'])
df.loc[0]=[1,2,3]
df.loc[1]=[4,5,6]
df.loc[2]=[7,8,9]
df.loc[3]=[10,11,12]
df.loc[4]=[13,14,15]
df.loc[5]=[16,17,18]
df.loc[6]=[19,20,21]
df
A B C
0 1 2 3
1 4 5 6
2 7 8 9
3 10 11 12
4 13 14 15
5 16 17 18
6 19 20 21
我想修改 df 以获得 df2;
df2 = pd.DataFrame(columns=['first', 'second','third','fourth','fifth','sixth'])
df2.loc[0]=[1,2,4,5,7,8]
df2.loc[1]=[4,5,7,8,10,11]
df2.loc[2]=[7,8,10,11,13,14]
df2.loc[3]=[10,11,13,14,16,17]
df2.loc[4]=[13,14,16,17,19,20]
df2
first second third fourth fifth sixth
0 1 2 4 5 7 8
1 4 5 7 8 10 11
2 7 8 10 11 13 14
3 10 11 13 14 16 17
4 13 14 16 17 19 20
也就是说,我想用df的前两列的三行来填充df2的第一行。 然后我们继续用 df 的两列的接下来的三行填充 df2 的第二行,依此类推。
我应该怎么做才能从 df 转移到 df2? 我可以做一些基本且简单的操作。 但现在看来对我来说还是很难。
谁能帮帮我吗?
最佳答案
更简单的解决方案可能是删除“C”列。只需连接 3 个列表即可为 df2 生成一行。
代码如下:
df.drop(['C'] ,axis = 1 , inplace = True)
df2 = pd.DataFrame(columns=['first', 'second','third','fourth','fifth','sixth'])
for i in range(0,len(df.A) - 2):
df2.loc[i] = list(df.loc[i]) + list(df.loc[i+1]) + list(df.loc[i+2])
print(df2)
关于python - Pandas : from a two columns dataframe to a (time series) multi-columned dataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63409225/