我可以读取CSV文件,其中使用第一列和该列作为spinner的输入而不重复吗?

2024-10-03 13:23:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我设计了一个Spinner GUI,在那里我已经给出了一些选项集,但是我需要知道如何通过扫描CSV文件中的值并显示为选项集来显示选项集,在这里我也能够显示值集,但不能作为Spinner的输入。在我的CSV文件中有很多相同值的重复,所以我使用了pandas的Counter并进行了排序,因此它只显示一次。 我的代码:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.spinner import Spinner
import pandas as pd
from collections import Counter

Builder.load_string('''
<MainScreen>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'
        BoxLayout:
            size_hint: 1, .9
            orientation: 'vertical'
            padding: 20
            spacing: 20
            Spinner:
                id: firsto
                text: 'select'
                values: root.optionf
                on_text: root.updatesecond(firsto.text)
            Spinner:
                id: secondo
                text: 'select'
                values: root.options


''')
class MainScreen(FloatLayout):
    def __init__(self, **kwargs):
        self.buildLists()
        super(MainScreen, self).__init__(**kwargs)
    def buildLists(self):
        df = pd.read_csv('data.csv')
        saved_column = df['marks'] #you can also use df['column_name']
        a = (Counter(saved_column))
        b = (sorted(a))
        print(b)
        self.optionf = ['Select','a','b','c']
        self.options = ['Select'] 
    def updatesecond(self,text):
        if text == 'a':
            self.ids.secondo.values =['1','2']
        elif text == 'b':
            self.ids.secondo.values =['3','4']
        else:
            self.ids.secondo.values =['5','6']
    def onExit(self):
        App.get_running_app().stop()

class TestApp(App):
    def build(self):
        return MainScreen()
if __name__ == "__main__": 
    TestApp().run() 

可以扫描csv文件的第一列吗。如果第一列是重复多次的距离,假设列第一的距离为70.1,40,5.1,40.8,70.1,其中70.1将重复多次,则应首先在微调器中显示一次。而不是这一行=>gt;>

^{pr2}$

将显示来自CSV的值。 非常感谢。在


Tags: 文件csvtextfromimportselfappdef