Add new column in Pandas DataFrame Python
本问题已经有最佳答案,请猛点这里访问。
我在熊猫中有数据框架,例如:
1 2 3 4 | Col1 Col2 A 1 B 2 C 3 |
现在,如果我想再添加一个名为col3的列,该值基于col2。在公式中,如果col2>1,则col3为0,否则为1。所以,在上面的例子中。输出将是:
1 2 3 4 | Col1 Col2 Col3 A 1 1 B 2 0 C 3 0 |
你知道如何做到这一点吗?
你只是做了一个相反的比较。
1 | df['Col3'] = (df['Col2'] <= 1).astype(int) |
如果您想要一个更通用的解决方案,您可以根据
1 | df['Col3'] = df['Col2'].map(lambda x: 42 if x > 1 else 55) |
或:
1 2 3 4 | df['Col3'] = 0 condition = df['Col2'] > 1 df.loc[condition, 'Col3'] = 42 df.loc[~condition, 'Col3'] = 55 |
我发现向数据帧添加列的最简单方法是使用"add"函数。这是一段代码,还有一个输出到csv文件的代码片段。请注意,包含"columns"参数允许您设置列的名称(恰好与我用作数据源的np.array的名称相同)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # now to create a PANDAS data frame df = pd.DataFrame(data = FF_maxRSSBasal, columns=['FF_maxRSSBasal']) # from here on, we use the trick of creating a new dataframe and then"add"ing it df2 = pd.DataFrame(data = FF_maxRSSPrism, columns=['FF_maxRSSPrism']) df = df.add( df2, fill_value=0 ) df2 = pd.DataFrame(data = FF_maxRSSPyramidal, columns=['FF_maxRSSPyramidal']) df = df.add( df2, fill_value=0 ) df2 = pd.DataFrame(data = deltaFF_strainE22, columns=['deltaFF_strainE22']) df = df.add( df2, fill_value=0 ) df2 = pd.DataFrame(data = scaled, columns=['scaled']) df = df.add( df2, fill_value=0 ) df2 = pd.DataFrame(data = deltaFF_orientation, columns=['deltaFF_orientation']) df = df.add( df2, fill_value=0 ) #print(df) df.to_csv('FF_data_frame.csv') |