从Python数据帧中提取值
我有一个熊猫数据框,格式如下:从Python数据帧中提取值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,格式如下: ID|Date|Values 1234|2021-01-01|{"Reason":"Change", "New Value":"Segment 2", "Old Value":"Segment 1"} 我想解析values列并创建一个新的数据帧: ID|Date|Old|New 值的顺序有时是不同的。如何在Python中提取这些值 df[[&
ID|Date|Values
1234|2021-01-01|{"Reason":"Change", "New Value":"Segment 2", "Old Value":"Segment 1"}
我想解析values列并创建一个新的数据帧:
ID|Date|Old|New
值的顺序有时是不同的。如何在Python中提取这些值
df[["Old", "New"]] = df["Values"].apply(lambda d: (d["Old Value"], d["New Value"])) \
.tolist()
df = df.drop(columns="Values")
另一种方法:
import operator
old = operator.itemgetter("Old Value")
new = operator.itemgetter("New Value")
df["Old"] = df["Values"].apply(old)
df["New"] = df["Values"].apply(new)
df = df.drop(columns="Values")
您可以使用
pd.DataFrame()
将字典提取到列中。从生成的新数据帧中获取2个相关列,并使用将其与原始数据帧连接,然后按删除原始值
请注意,在执行相同任务的各种方法中,使用pd.DataFrame()
将字典提取到列中是最快的。它比在lambda函数中使用.apply()
要快得多
结果:
print(df_new)
ID Date Old Value New Value
0 1234 2021-01-01 Segment 1 Segment 2
这回答了你的问题吗?列是一个对象,因此我得到了“TypeError:字符串索引必须是整数”如何创建示例数据帧:pd.dataframe(…)
?请将df.info()
和df.head()
输出添加到您的帖子中。我得到以下信息:“[Index(['Old Value','New Value'],dtype='object')]中没有一个在[columns]中。”
print(df_new)
ID Date Old Value New Value
0 1234 2021-01-01 Segment 1 Segment 2