我想知道有没有一种优雅而有效的方法来实现我的标题所说的。
import pandas as pd
data1 = pd.DataFrame([['ad_001','50'], ['ad_002', '100'], ['ad_003', '150']],columns=['name', 'score'])
data2 = pd.DataFrame([['ad_001','75'], ['ad_002', '200'], ['ad_004', '100']],columns=['name', 'score'])
我试过用
data1.merge(data2, how='left', left_on='name', right_on='name')
以合并两个 Dataframe 。
我的目标是连接以下 Dataframe 并自动填充缺失值:
data1 = pd.DataFrame([['ad_001','50','75'], ['ad_002', '100', '200'], ['ad_003', '150', '0'], ['ad_004', '0', '100']],columns=['name', 'score_x','score_y'])
然后我想用matplotlib显示数据的散点图,并根据x和y的最大得分给每个点着色。
- 如果x或y〉100,则为红色
- 如果x或y〉150,则为绿色
- 如果x或y〉200,则为红色。
我试着看了一下用户指南,但是我很清楚如何实现它。
或者有没有其他的绘图python模块,一个人会建议达到同样的结果?
1条答案
按热度按时间mklgxw1f1#
对于合并两个 Dataframe 的第一部分,其中一种方法是使用merge和
outer
,以便捕获所有列。这将包括所有包含nan
但没有数据可用的行。使用.fillna(0)
将处理此问题--基于您提到的无效数字的显示方式。对于条件和绘图,最简单的方法是使用类似
np.where()
的东西,您可以使用它来确定您想要的颜色。由于您的问题有两个条件red
,因此我将其中一个设置为红色,而另一个设置为蓝色。您可以根据需要调整数字和颜色。一旦带有颜色的列可用,使用groupby()
和绘图将给予出你需要的结果。希望这对你有帮助...