pandas - ValueError: Lengths must match to compare - 从表 Pandas 中选择特定值
问题描述
我是编程新手,目前正在尝试在 Y 轴和 X 之间进行比较:(它有 3 个值),但它不能将“一到三”与我所做的代码进行比较。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("table3.csv").drop(columns=["STUDY_ID"]) #Had to because it just spams the colunm..
LRX= df[df['Total'] == ([['L999L', 'R999R','Xray1']])]
y = df['CD2']
x = df['LRX']
plt.xlabel('Total') ; plt.ylabel('CD2')
plt.scatter(x,y)
plt.title('Matplot scatter plot')
plt.show()
Total 是包含 L999L、R999R 和 Xray1 的柱子。
我做错了什么?
Total CD8 CD2
L999L 54.1059 261.105
R999R 88.5381 67.6109
Xray1 48.0809 404.211
解决方案
现在这个工作:定义DataFrame:
df=pd.DataFrame({'Total':['L999L','R999R','Xray1'],'CD2':[48.43,24.54,26.13],'CD8':[43.51,54.12,65.13]})
然后你必须用数字替换 'Total' 中的字符串,以便 plot 命令知道在哪里放置刻度(注意,这里的条形图要容易得多;在那里,plot 命令在没有这种解决方法的情况下也可以工作):
ticklabels = ['L999L','R999R','Xray1']
tickdict = {'L999L': 0,'R999R': 1,'Xray1': 2}
df=df.replace({'Total':tickdict})
然后进行绘图,首先 x 轴实际上是 [0,1,2],但随后刻度名称被替换:
fig, ax = plt.subplots()
ax.scatter(df['Total'], df['CD2'])
plt.xlabel('Total') ; plt.ylabel('CD2')
ax.xaxis.set_ticks(np.arange(len(df['Total'])))
ax.xaxis.set_ticklabels(df['Total'])
ax.set_xticklabels(tickdict)
plt.show()
推荐阅读
- react-native - 卸载并移动屏幕后在 Audio.Sound() 上调用的方法
- r - 如何将 diff() 与 group_by() 结合使用
- jekyll - 使用分页时如何按修改日期对帖子进行排序?
- sql - SQL:根据最近的日期选择一个字段中的值是唯一的记录
- c# - StackLayout 中的 ChartView 截断图表
- angular - 您好,我在发出 http 删除请求时收到以下错误
- scala - Scala“无法在对象 CassandraConnector 中访问 DCAwareRoundRobinPolicy 类中的构造函数 DCAwareRoundRobinPolicy”
- html - 有条件地禁用Angular中的标签
- php - Laravel:如何在用户注册表单中添加下拉列表
- postgresql - 在 adminer 中查看 postgresql json 表作为(可排序的)表