我具有以下形式的数据框:
import pandas as pd
df = pd.DataFrame({'t': [0, 1, 2, 3, 4, 5, 6],
'l': [["c", "d"], ["a", "b"], ["c", "d"], ["a", "b"], ["c", "d"], ["c", "d"], ["c", "d"]]})
列l
由列表组成,其中列表条目可以位于集合{a,b,c,d}
中。我想按以下方式为l
的每个值绘制t
的内容,该方法基本上显示了一次{{1}中四个{a,b,c,d}
可能值中的哪个acticated
1}}:
为了创建以上图表,我所做的是基于上面的t
创建以下数据框(df
未激活,否则为非负数):
-1
从技术上讲,这给了我我想要的东西,但是,我想想有一种更简单,更专业的方法来绘制它-使用Python的一个库是否有更聪明的方法?
答案 0 :(得分:1)
怎么样呢?
# Reshape dataframe
dff = df.l.apply(pd.Series).merge(df, right_index = True, left_index = True).drop(["l"], axis = 1).melt(id_vars = ['t'], value_name = "l").drop("variable", axis = 1)
# Plot dataframe
import matplotlib.pyplot as plt
plt.scatter(dff['t'], dff['l'])
# plt.grid(True)
有关此代码中正在发生的事情的更多详细信息,请单击以下链接:https://mikulskibartosz.name/how-to-split-a-list-inside-a-dataframe-cell-into-rows-in-pandas-9849d8ff2401
注意:无论您在 l 列中的列表中有多少项,它都应该起作用。