将值分配给python中数据框列表中的单个数据框

时间:2019-10-21 14:35:32

标签: python pandas dataframe

我创建了2个数据框的列表

df = [pd.DataFrame(0, columns = ['a', 'b', 'c'], index = range(0, 5))] * 2

df[0]['a'][1] = 55

当前输出:

[    a  b  c
 0   0  0  0
 1  55  0  0
 2   0  0  0
 3   0  0  0
 4   0  0  0,     a  b  c
 0   0  0  0
 1  55  0  0
 2   0  0  0
 3   0  0  0
 4   0  0  0]

预期输出:

[    a  b  c
 0   0  0  0
 1  55  0  0
 2   0  0  0
 3   0  0  0
 4   0  0  0,     a  b  c
 0   0  0  0
 1   0  0  0
 2   0  0  0
 3   0  0  0
 4   0  0  0]

我希望此代码段为第一个df,col a和索引1分配一个值1。但是,它为两个数据帧都分配了值。

我不确定是否会出现问题,因为我通过将df乘以2来创建列表,从而将结果应用于所有dfs。

有没有一种方法可以创建多个df的列表,并根据索引将结果仅附加到一个df。

谢谢

2 个答案:

答案 0 :(得分:1)

改为使用列表理解:

df = [pd.DataFrame(0, columns = ['a', 'b', 'c'], index = range(0, 5)) for _ in range(2)]

df[0]['a'][1] = 55

#
[    a  b  c
0   0  0  0
1  55  0  0
2   0  0  0
3   0  0  0
4   0  0  0,    a  b  c
0  0  0  0
1  0  0  0
2  0  0  0
3  0  0  0
4  0  0  0]

答案 1 :(得分:1)

您创建了浅表副本。试试这个:

df = [pd.DataFrame(0, columns = ['a', 'b', 'c'], index = range(0, 5)) for _ in range(2)]