Ich mache eine Split-Apply-Kombination, um eine Gesamtmenge für jedes Mitglied zu finden. Der Datenrahmen, den ich brauche, sollte 14 Spalten haben: MemberID, DSFS_0_1, DSFS_1_2, DSFS_2_3, DSFS_3_4, DSFS_4_5, DSFS_5_6, DSFS_6_7, DSFS_7_8, DSFS_8_9, DSFS_9_10, DSFS_10_11, DSFS_11_12, DrugCount
. Allerdings bekomme ich nicht die 14. (DrugCount
), irgendeine Idee warum? Die variablen joined
Ausgänge alle 14, aber joined_grouped_add
, die Funktion, in der ich Aggregation tun, liefert nur 13.Eine Spalte, die während der Split-Apply-Kombination in Pandas weggelassen wurde
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sys
from sklearn.cross_validation import train_test_split
from sklearn import linear_model
# this function takes the drugcount dataframe as input and output a tuple of 3 data frames: DrugCount_Y1,DrugCount_Y2,DrugCount_Y3
def process_DrugCount(drugcount):
dc = pd.read_csv("DrugCount.csv")
sub_map = {'1' : 1, '2':2, '3':3, '4':4, '5':5, '6':6, '7+' : 7}
dc['DrugCount'] = dc.DrugCount.map(sub_map)
dc['DrugCount'] = dc.DrugCount.astype(int)
dc_grouped = dc.groupby(dc.Year, as_index=False)
DrugCount_Y1 = dc_grouped.get_group('Y1')
DrugCount_Y2 = dc_grouped.get_group('Y2')
DrugCount_Y3 = dc_grouped.get_group('Y3')
DrugCount_Y1.drop('Year', axis=1, inplace=True)
DrugCount_Y2.drop('Year', axis=1, inplace=True)
DrugCount_Y3.drop('Year', axis=1, inplace=True)
return (DrugCount_Y1,DrugCount_Y2,DrugCount_Y3)
# this function converts strings such as "1- 2 month" to "1_2"
def replaceMonth(string):
replace_map = {'0- 1 month' : "0_1", "1- 2 months": "1_2", "2- 3 months": "2_3", "3- 4 months": '3_4', "4- 5 months": "4_5", "5- 6 months": "5_6", "6- 7 months": "6_7", \
"7- 8 months" : "7_8", "8- 9 months": "8_9", "9-10 months": "9_10", "10-11 months": "10_11", "11-12 months": "11_12"}
a_new_string = string.map(replace_map)
return a_new_string
# this function processes a yearly drug count data
def process_yearly_DrugCount(aframe):
processed_frame = None
aframe.drop("Year", axis = 1, inplace = True)
reformed = aframe[['DSFS']].apply(replaceMonth)
gd = pd.get_dummies(reformed)
joined = pd.concat([aframe, gd], axis = 1)
joined.drop("DSFS", axis = 1, inplace = True)
joined_grouped = joined.groupby("MemberID", as_index = False)
joined_grouped_agg = joined_grouped.agg(np.sum)
print joined_grouped_agg
return processed_frame
def main():
pd.options.mode.chained_assignment = None
daysinhospital = pd.read_csv('DaysInHospital_Y2.csv')
drugcount = pd.read_csv('DrugCount.csv')
process_DrugCount(drugcount)
process_yearly_DrugCount(drugcount)
replaceMonth(drugcount['DSFS'])
if __name__ == '__main__':
main()
Und wo sind die lin es, die die Funktion (en) aufrufen? – Parfait
@Parfait Bearbeitete es. – squidvision
Auch hier passiert zu viel, um zu helfen. Ich rate, jedes Teil zu brechen und Druckanweisungen hinzuzufügen, um Inhalt zu sehen, um zu sehen, wo Spalte entfernt wird. Andernfalls richten Sie ein [reproduzierbares Beispiel] (http://stackoverflow.com/help/mcve) ein. – Parfait