我有以下and
:
Dataframe的一个列pandas.DataFrame
为每一行保存一个字典。
我想要做的是为此dict中的每个键向DataFrame添加一列。因此,在此示例中,新列将是:pontos
,rodada
等,对于每一行,这些列将使用dict中的相应值进行填充。
到目前为止,我已尝试使用以下其中一个键:
mes
但是,因此我收到了一个填充df_times["rodada"] = [df_times["pontos"].get('rodada') for d in df_times["pontos"]]
值的新列rodada
:
我做错了什么提示?
答案 0 :(得分:2)
您可以创建一个新的数据框,并将concat
创建为当前的数据框,如:
df2 = pd.concat([df, pd.DataFrame(list(df.pontos))], axis=1)
import pandas as pd
df = pd.DataFrame([
['A', dict(col1='1', col2='2')],
['B', dict(col1='3', col2='4')],
], columns=['X', 'D'])
print(df)
df2 = pd.concat([df, pd.DataFrame(list(df.D))], axis=1)
print(df2)
X D
0 A {'col2': '2', 'col1': '1'}
1 B {'col2': '4', 'col1': '3'}
X D col1 col2
0 A {'col2': '2', 'col1': '1'} 1 2
1 B {'col2': '4', 'col1': '3'} 3 4
答案 1 :(得分:1)
您只需稍微改变一下您的理解就可以提取数据。
应该是:
df_times [“rodada”] = [d.get('rodada')表示d in df_times [ “庞都”]]
您希望字典键'rodada'的值成为新列的基础。所以你迭代循环中的那些字典条目 - 换句话说,d,然后按键提取值以创建新列。
答案 2 :(得分:0)
您还可以使用join和pandas Apply功能:
df=df.join(df['pontos'].apply(pd.Series))