从数据框字典中提取列

时间:2021-04-01 22:04:13

标签: python pandas dictionary

我有一个字典 d,其中的键与 Pandas 数据框相关联。因此,我可以执行 print(d[0]['col1'] 并且我可以为键 col1 返回 0

如果我打印 d ,对于键 0-

我有类似的东西
{0:                               col1       type         Weather  \
0                                    id    varchar                  
1                                    id    varchar                  
2                                    id    varchar                  
3                                    id    varchar                  
4                                    id    varchar                  
..                               ...        ...            ...   

预期结果变成

{0:                     col1
0                       id
1                       id
2                       id
3                       id
4                       id
..                               ...

但是如何将其应用于所有键?所以我的字典只包括col1。我已经坚持了一段时间,任何指导表示赞赏。

2 个答案:

答案 0 :(得分:2)

我会这样做:

import pandas as pd

d = {0:pd.DataFrame({'col0':[0,1,2], 'col1':[0,0,0]}),
    1:pd.DataFrame({'col0':[1,2,3], 'col1':[1,1,1]})}

def get_cols(d,cols):
    for key, value in d.items():
        d[key] = value[cols]
    return d

这将为您提供所选列的系列

print(get_cols(d,'col0'))

这将为您提供所选列的 df

print(get_cols(d,['col0']))

这将为您提供所选列的 df

print(get_cols(d,['col0','col1']))

注意:此策略修改了 d,因为它是通过引用传递的。您也可以返回 None 并在函数中修改它之前使用 d 或深拷贝 d

答案 1 :(得分:2)

您是否尝试过使用字典理解?

forecast.table <- tibble()

如果你想要没有索引的输出,你可以用任何一个替换最后一行

import pandas as pd

df0 = pd.DataFrame({'col1': [1,2,3], 'col2': [3,4,5], 'col3': [5,6,7]})
df1 = pd.DataFrame({'col1': [7,8,9], 'col2': [10,11,12], 'col3': [13,14,15]})

d = {}
d[0] = df0
d[1] = df1


print({x:d[x]['col1'] for x in d})

print({x:d[x]['col1'].values for x in d})