तीन तार हैं जिन्हें मैं परिवर्तित करना चाहता हूं।

 row='A;B;C'

 col='aaa,bbb,ccc;aaa,bbb,abc;aaa,bbb,ccc'

 val='99,80,90;100,100,100;90,90,90'

मैं पाइथन में String को Dataframe या Matrix में बदलना चाहता हूं।

   aaa  bbb   ccc   abc

A  99   80    90    NaN

B  100  100   NaN   100

C  90   90    90    NaN

उपरोक्त स्ट्रिंग्स या किसी अन्य स्ट्रिंग्स को Dataframe में कैसे बदलें?

1
siena 24 फरवरी 2020, 14:07

2 जवाब

यह https://pandas के साथ चाल चलनी चाहिए। pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

आपके पास कुछ असंगत सीमांकक हैं जिन्हें मैंने , से बदल दिया है

row='A,B,C' 
col='aaa,bbb,ccc,aaa,bbb,abc,aaa,bbb,ccc' 
val='99,80,90,100,100,100,90,90,90'
buffer = ""
buffer += row + "\n" + col+ "\n"+val
pandas.read_csv(buffer)
0
LopDev 24 फरवरी 2020, 15:02
मैंने data=pd.read_csv(StringIO(buffer)) की कोशिश की इसलिए मुझे `ए बी सी आ बीबीबी सीसीसी आआ बीबीबी एबीसी आ बीबीबी सीसीसी 99 80 90 100 100 100 90 90 90 ` मैं डेटाफ्रेम प्रारूप कैसे प्राप्त कर सकता हूं जो मैंने पूछा था?
 – 
siena
24 फरवरी 2020, 14:53
इसे एक डेटाफ्रेम वापस करना चाहिए
 – 
Cristofor
24 फरवरी 2020, 14:56

कैसा रहेगा:

def create_frame(row_str, col_str, val_str,
                 record_delim=';', field_delim=','):
    out = zip(row_str.split(record_delim),
              col_str.split(record_delim),
              val_str.split(record_delim))

    df = pd.DataFrame({i: dict(zip(c.split(field_delim),
                                   v.split(field_delim)))
                       for i, c, v in out})
    return df.T

# Example
row='A;B;C'
col='aaa,bbb,ccc;aaa,bbb,abc;aaa,bbb,ccc'
val='99,80,90;100,100,100;90,90,90'

df = create_frame(row, col, val)
print(df)

[बाहर]

   aaa  bbb  ccc  abc
A   99   80   90  NaN
B  100  100  NaN  100
C   90   90   90  NaN
0
Chris A 24 फरवरी 2020, 15:43