gpt4 book ai didi

python - 如何将嵌套列添加到 3D Pandas DataFrame?

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:52 24 4
gpt4 key购买 nike

Pandas 新手,不太清楚 3D DataFrame 是如何工作的。我的名为 'new' 的数据框如下所示:

     unique    cat    numerical   
a b c d e f
0 0 1 2 3 4 5
1 0 1 2 3 4 5

我想插入列 'z' 以便它最终像这样:

     unique       cat    numerical   
a b z c d e f
0 0 1 9 2 3 4 5
1 0 1 9 2 3 4 5

从数据框中切出 'unique' 后,我成功创建了一个新列:

这样做:

new_column = new.loc[:,'unique'].assign(z=pd.Series([9,9]).values)

给我这个:

   a  b  z
0 0 1 9
1 0 1 9

但是我不知道如何将它放回数据框中。我试过:

new['unique'] = new_column

但后来我发现它只是尝试替换 'unique' 下的所有行和列中的所有值,如下所示:

new['unique'] = 'a'

获取:

  unique    cat    numerical   
a b c d e f
0 a a 2 3 4 5
1 a a 2 3 4 5

使用 .loc 得到这个:

  unique     cat    numerical   
a b c d e f
0 NaN NaN 2 3 4 5
1 NaN NaN 2 3 4 5

这是我的完整代码:

import pandas as pd
import numpy as np

data=[[0,1,2,3,4,5],[0,1,2,3,4,5]]
datatypes=np.array(['unique','unique','cat','cat','numerical','numerical'])
columnnames=np.array(['a','b','c','d','e','f'])
new = pd.DataFrame(data=data, columns=pd.MultiIndex.from_tuples(zip(datatypes,columnnames)))
print('new: ')
print(new)

new_column = new.loc[:,'unique'].assign(z=pd.Series([9,9]).values)
print('\nnew column:')
print(new_column)

new.loc[:,'unique'] = new_column
print('\nattempt 1:')
print(new)

new['unique'] = new_column
print('\nattempt 2:')
print(new)

最佳答案

一种方法:

# Create your new multiindexed column:
new['unique','z'] = 9
# Re-order your columns in your desired order:
new = new[['unique', 'cat', 'numerical']]

>>> new
unique cat numerical
a b z c d e f
0 0 1 9 2 3 4 5
1 0 1 9 2 3 4 5

关于python - 如何将嵌套列添加到 3D Pandas DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52238877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com