【问题标题】:how can select data of coefficient of 3 columns from csv file如何从csv文件中选择3列系数的数据
【发布时间】:2019-08-26 14:59:45
【问题描述】:

我想根据我的数据集中的行索引,最好通过Pandas.DataFrame 绘制2个不同场景的列数:

第一种情况: 列 index[2,5,8,..., n+2]

第二种情况:最后 480 列或列索引 [961-1439] picture

我尝试使用以下列的索引:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

dft = pd.read_csv("D:\Test.csv" , header=None)
dft.head()

id_set = dft[dft.index % 2 == 0].astype('int').values
A = dft[dft.index % 2 == 1].values
B = dft[dft.index % 2 == 2].values
C = dft[dft.index % 2 == 3].values
data = {'A': A[:,0], 'B': B[:,0], 'C': C[:,0]}
df = pd.DataFrame(data, columns=['A','B','C'], index = id_set[:,0])

#1st scenario
j=0
index=[]
for i in range(1439):
    if j==2:
        j=0
        continue
    else:
        index.append(i)
        j+=1
print(index)

#2nd scenario
last_480 = df.[0:480][::-1]

我找到了 post1post2,但它们不是我的情况!

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

    标签: python pandas csv dataframe indexing


    【解决方案1】:

    第一种情况:

    df.iloc[:, 2::3]
    

    这里的切片是指从第2个开始的所有行、列,之后的每3个。

    第二种情况:

    df.iloc[:, :961:-1]
    

    这里的切片是指从列表末尾到961的所有行、列。

    编辑:

    import matplotlib.pyplot as plt
    import seaborn as sns
    
    senario1 = df.iloc[:, 2::3].copy()
    sns.lineplot(data = senario1.T)
    
    

    您可以将切片的副本保存到另一个变量,然后由于您想按行绘制图形,您需要对切片矩阵进行转置(这将使您的行变成列)。

    【讨论】:

    • 感谢您的回复,但您知道如何根据不同颜色的行索引绘制选定的切片吗?例如在第一种情况下?选定的列属于第一行(行索引=0,红色),选定的列属于第二行(行索引=1,绿色)等等...
    • 添加了如何绘制它,如果您还有任何问题,请告诉我!
    • 您好,好像出了点问题我有一个错误ValueError: These style levels are missing dashes: {6, 7, 8, .., 39}。你能修好吗?
    • sns.lineplot(data = senario1.T, dashes = False) 应该修复它。
    • 我受到您的评论启发,发现sns.scatterplot(data = senario1, markers = False, legend=False) 还可以,但我找不到好的cmap。我意识到sns.lineplot() 并没有给我我感兴趣的情节。
    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多