मेरे पास श्रृंखला की निम्नलिखित सूची है।

[LVH = 0    63 (88.73 %)
 LVH = 1      6 (8.45 %)
 LVH = 2      1 (1.41 %)
 LVH = 3      1 (1.41 %)
 dtype: object, LV diastolic dysfunction (guideline) = 0    60 (84.51 %)
 LV diastolic dysfunction (guideline) = 1     8 (11.27 %)
 LV diastolic dysfunction (guideline) = 4      3 (4.23 %)
 dtype: object, LV diastolic dysfunction grade (formula) = 0.0    60 (84.51 %)
 LV diastolic dysfunction grade (formula) = 1.0      4 (5.63 %)
 LV diastolic dysfunction grade (formula) = 3.0      4 (5.63 %)
 LV diastolic dysfunction grade (formula) = 4.0      3 (4.23 %)
 dtype: object, LV filling pressure(formula) = 0    67 (94.37 %)
 LV filling pressure(formula) = 1      4 (5.63 %)
 dtype: object, cause of hospitalization = 8      2 (2.82 %)
 cause of hospitalization = 1    43 (60.56 %)
 cause of hospitalization = 2    21 (29.58 %)
 cause of hospitalization = 3      1 (1.41 %)
 cause of hospitalization = 6      4 (5.63 %)
 dtype: object, simplfied cause of hospitalization = 1    43 (60.56 %)
 simplfied cause of hospitalization = 2    22 (30.99 %)
 simplfied cause of hospitalization = 3      4 (5.63 %)
 simplfied cause of hospitalization = 5      2 (2.82 %)
 dtype: object, ACC/AHA = A    10 (14.08 %)
 ACC/AHA = 0    56 (78.87 %)
 ACC/AHA = C      2 (2.82 %)
 ACC/AHA = B      3 (4.23 %)
 dtype: object, ACC-AHA -binary = 0    69 (97.18 %)
 ACC-AHA -binary = 1      2 (2.82 %)
 dtype: object, NYHA = I      65 (91.55 %)
 NYHA = II       2 (2.82 %)
 NYHA = III      4 (5.63 %)
 dtype: object, NYHA-binary = 0    66 (92.96 %)
 NYHA-binary = 1      5 (7.04 %)
 dtype: object]

सूची के प्रत्येक तत्व के लिए, अर्थात श्रृंखला, मुझे उन्हें दो स्तंभों के साथ डेटाफ़्रेम में बदलने की आवश्यकता है। उदाहरण के लिए, यह निम्न जैसा दिखना चाहिए:

Column 1                                      Column 2
LVH = 0                                       63 (88.73 %)
LVH = 1                                        6 (8.45 %)
LVH = 2                                        1 (1.41 %)    
LVH = 3                                        1 (1.41 %)
LV diastolic dysfunction (guideline) = 0      60 (84.51 %)
LV diastolic dysfunction (guideline) = 1       8 (84.51 %)
LV diastolic dysfunction (guideline) = 4       3 (84.51 %)
... 

और इसी तरह। इसके बाद लोगों को डाउनलोड करने के लिए इसे CSV प्रारूप में बदल दिया जाएगा। मैंने अभी मूल pd.DataFrame और pd.DataFrame.from_items का भी उपयोग किया है। पहला इसे डेटाफ्रेम में परिवर्तित करता है लेकिन जिस तरह से मैं चाहता था। दूसरा त्रुटि देता है, लेकिन मुझे नहीं लगता कि यह वैसे भी मददगार होगा। इसे कैसे हल किया जा सकता है?

अपडेट करें

categorical_vars_multi_class = ['LVH','LV diastolic dysfunction (guideline)','LV diastolic dysfunction grade (formula)','LV filling pressure(formula)','cause of hospitalization','simplfied cause of hospitalization','ACC/AHA','ACC-AHA -binary','NYHA','NYHA-binary']

def getMultiClassData(index,table, prop):
    tab = pd.Series()
    for i in range(len(table)): 
        tab_str = str(table[i]) + " (" + str(prop[i]) + " %)"
        tab = tab.set_value(i,tab_str)
    tab.index = index
    return(tab)


def getMultiClassTable(data,name):
    table = pd.value_counts(data[name].values, sort=False)
    table.index = [name + ' = ' + str(x) for x in table.index]
    prop = (table/table.sum() * 100).round(2)

    return(getMultiClassData(table.index,table.values, prop))



m_cluster_1 = [getMultiClassTable(data,x) for x in categorical_vars_multi_class]

data वेरिएबल के लिए कॉलम नाम और माप के साथ एक डेटाफ्रेम है। डेटासेट विशाल और संवेदनशील है।

0
user6401955 15 पद 2018, 01:03

1 उत्तर

सबसे बढ़िया उत्तर

अज्ञात data के कारण मैं आपके उदाहरण को दोहरा नहीं सका, इसलिए मैंने अपना नमूना उदाहरण बनाया। आप इससे मदद ले सकते हैं -

s1 = pd.Series(['1kg', '2kg'], index=['first', 'second'])
s2 = pd.Series(['3kg', '4kg'], index=['third', 'fourth'])
lst = [s1, s2]
lst

# [first     1kg
#  second    2kg
#  dtype: object, third     3kg
#  fourth    4kg
#  dtype: object]

ndf = pd.concat(lst,  axis = 1, keys=[s.name for s in lst], sort=False).fillna('').apply(lambda x: ''.join(x), axis=1)
ndf = pd.DataFrame(ndf).reset_index()
ndf.columns = ['Column 1', 'Column 2']
ndf


+---+----------+----------+
|   | Column 1 | Column 2 |
+---+----------+----------+
| 0 | first    | 1kg      |
| 1 | second   | 2kg      |
| 2 | third    | 3kg      |
| 3 | fourth   | 4kg      |
+---+----------+----------+
1
meW 15 पद 2018, 01:27