Python 将字符串转换为系列中的浮点数
我想用(13MB)数据集绘制“MJD”与“MJD_DUPLICATE”的对比图 DR14Q_pruned_repeats.csv“在此处找到:: 这是我的密码:Python 将字符串转换为系列中的浮点数,python,string,pandas,csv,series,Python,String,Pandas,Csv,Series,我想用(13MB)数据集绘制“MJD”与“MJD_DUPLICATE”的对比图 DR14Q_pruned_repeats.csv“在此处找到:: 这是我的密码: import numpy as np import pandas as pd import matplotlib.pyplot as plt from astropy.table import Table from astropy.io import ascii from astropy.io import fits filename
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from astropy.table import Table
from astropy.io import ascii
from astropy.io import fits
filename = 'DR14Q_pruned_repeats.csv'
df = pd.read_csv(filename)
multiples = df[df["N_SPEC"] >2]
multiples.plot.scatter(x='MJD', y='N_SPEC')
plt.show()
multiples.plot.scatter(x='MJD', y='MJD_DUPLICATE')
plt.show()
MJD与MJD_重复打印线返回错误:
ValueError: scatter requires y column to be numeric
pd.to_数字行只返回NaNs。您需要:
import ast
doubles = df[df["N_SPEC"] ==2].copy()
multiples = df[df["N_SPEC"] >2].copy()
repeats = df[df["N_SPEC"] >1].copy()
multiples.plot.scatter(x='MJD', y='N_SPEC')
plt.show()
将列MJD\u DUPLICATE
从string
s转换为元组,然后按位置选择值-例如str[1]
作为元组的第二个值:
print (multiples['MJD_DUPLICATE'].head(10))
5 (0, 56279, 0, 56539, 0, 56957, -1, -1, -1, -1,...
85 (0, 56243, 0, 56543, 0, 57328, -1, -1, -1, -1,...
170 (0, 52262, 0, 55447, 0, 57011, -1, -1, -1, -1,...
200 (0, 52262, 0, 55443, 0, 57006, -1, -1, -1, -1,...
262 (0, 52525, 0, 55443, 0, 57011, -1, -1, -1, -1,...
277 (0, 51793, 0, 55531, 0, 57006, -1, -1, -1, -1,...
287 (0, 55182, 0, 55184, 0, 55443, -1, -1, -1, -1,...
313 (0, 56248, 0, 56245, 0, 56572, -1, -1, -1, -1,...
314 (0, 55182, 0, 55184, 0, 55444, -1, -1, -1, -1,...
324 (0, 52261, 0, 55184, 0, 55444, -1, -1, -1, -1,...
Name: MJD_DUPLICATE, dtype: object
ser = multiples['MJD_DUPLICATE'].apply(ast.literal_eval).str[1]
multiples['MJD_DUPLICATE'] = pd.to_numeric(ser, errors='coerce')
print (multiples['MJD_DUPLICATE'].head(10))
5 56279
85 56243
170 52262
200 52262
262 52525
277 51793
287 55182
313 56248
314 55182
324 52261
Name: MJD_DUPLICATE, dtype: int64
multiples.plot.scatter(x='MJD', y='MJD_DUPLICATE')
plt.show()
你需要:
import ast
doubles = df[df["N_SPEC"] ==2].copy()
multiples = df[df["N_SPEC"] >2].copy()
repeats = df[df["N_SPEC"] >1].copy()
multiples.plot.scatter(x='MJD', y='N_SPEC')
plt.show()
将列MJD\u DUPLICATE
从string
s转换为元组,然后按位置选择值-例如str[1]
作为元组的第二个值:
print (multiples['MJD_DUPLICATE'].head(10))
5 (0, 56279, 0, 56539, 0, 56957, -1, -1, -1, -1,...
85 (0, 56243, 0, 56543, 0, 57328, -1, -1, -1, -1,...
170 (0, 52262, 0, 55447, 0, 57011, -1, -1, -1, -1,...
200 (0, 52262, 0, 55443, 0, 57006, -1, -1, -1, -1,...
262 (0, 52525, 0, 55443, 0, 57011, -1, -1, -1, -1,...
277 (0, 51793, 0, 55531, 0, 57006, -1, -1, -1, -1,...
287 (0, 55182, 0, 55184, 0, 55443, -1, -1, -1, -1,...
313 (0, 56248, 0, 56245, 0, 56572, -1, -1, -1, -1,...
314 (0, 55182, 0, 55184, 0, 55444, -1, -1, -1, -1,...
324 (0, 52261, 0, 55184, 0, 55444, -1, -1, -1, -1,...
Name: MJD_DUPLICATE, dtype: object
ser = multiples['MJD_DUPLICATE'].apply(ast.literal_eval).str[1]
multiples['MJD_DUPLICATE'] = pd.to_numeric(ser, errors='coerce')
print (multiples['MJD_DUPLICATE'].head(10))
5 56279
85 56243
170 52262
200 52262
262 52525
277 51793
287 55182
313 56248
314 55182
324 52261
Name: MJD_DUPLICATE, dtype: int64
multiples.plot.scatter(x='MJD', y='MJD_DUPLICATE')
plt.show()
这是可行的,但不符合我的要求。我需要保留MJD_副本中的所有数字数据,而不仅仅是第二列。是的,然后使用新名称创建新列
multiples['MJD_DUPLICATE_new']=pd.to_numeric(ser,errors='concurve')
并绘制它multiples.plot.scatter(x='MJD',y='MJD_DUPLICATE_new')
根本无法绘制元组,需要标量。不,抱歉,我仍然认为这不起作用。当我查看MJD_DUPLICATE_新变量时,它只有上面给出的两列。我将在这里进一步挖掘,因为数据本身不利于迭代,但会回来!嗯,可能主要问题是您想如何转换 MJD_DUPLICATE
列到普通非元组列?因为这是绘图所必需的。这可以工作,但不符合我的要求。我需要保留MJD_DUPLICATE中的所有数字数据,而不仅仅是第二列。是的,然后使用新名称创建新列倍数['MJD_DUPLICATE_new']=pd.到数值(ser,errors='Procure')
并对其进行绘图倍数、绘图、散布(x='MJD',y='MJD\u重复\u新')
根本无法绘制元组,需要标量。不,抱歉,我仍然认为这不起作用。当我查看MJD_DUPLICATE_新变量时,它只有上面给出的两列。我将在这里进一步挖掘,因为数据本身不利于迭代,但会回来!嗯,可能主要问题是您想如何转换 MJD_将
列复制到普通非元组列?因为这是绘图所必需的。