在熊猫列表中添加列表列

时间:2020-02-12 06:11:45

标签: python pandas

我在列表中的列表中具有不同大小的列名,例如[[“ a”,“ b”,“ c”],[“ d”,“ e”],[“ f”]],也很少列包含NaN。

| a b c d e f |

| 1 2 3 4 5 6 |

| 1 2 3 Nan NaN 6 |

| 1 2 3 4 inf 6 |

结果应该是列表中列表的总和,例如g = a + b + c,h = d + e,i = f,它们是列名。 NaN和应为NaN,而不是0。 如何循环执行此操作?

预期产量

| g h i |

| 6 9 6 |

| 6 NaN 6 |

| 6 inf 6 |

1 个答案:

答案 0 :(得分:3)

使用列表理解:

L = [["a","b","c"],["d","e"],["f"]]

a = [df[x].sum(axis=1, min_count=1) for x in L]

循环解决方案:

a = []
for x in L:
    a.append(df[x].sum(axis=1, min_count=1))

print (a)
[0    6
1    6
2    6
dtype: int64, 0    9.0
1    NaN
2    inf
dtype: float64, 0    6
1    6
2    6
dtype: int64]

然后添加concat

df1 = pd.concat(a, axis=1, keys=['g','h','i'])
print (df1)
   g    h  i
0  6  9.0  6
1  6  NaN  6
2  6  inf  6