如何在Pandas DataFrame Python中添加新列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9119)

在Pandas中有数据框:

Col1 Col2
A     1 
B     2
C     3

如果想添加一个名为Col3的列,并且该值基于Col2。在公式中,如果Col2> 1,则Col3为0,否则为1.因此在上面的示例中。输出将是:

Col1 Col2 Col3
A    1    1
B    2    0
C    3    0

如何实现这一目标?

提问于
用户回答回答于

你只是做一个相反的比较if Col2 <= 1。这将返回一个布尔型系列,其False值大于1,True值为另一个值。如果将其转换成int64D型,True1False成为0

df['Col3'] = (df['Col2'] <= 1).astype(int)

如果想要一个更一般的解决方案,可以根据Col2的值分配任何数字给Col3,应该这样做:

df['Col3'] = df['Col2'].map(lambda x: 42 if x > 1 else 55)

要么:

df['Col3'] = 0
condition = df['Col2'] > 1
df.loc[condition, 'Col3'] = 42
df.loc[~condition, 'Col3'] = 55
用户回答回答于

发现添加列到DataFrame的最简单方法是使用“add”功能。以下是一段代码,也包含输出到CSV文件的代码。请注意,包含“columns”参数允许设置列的名称(恰好与我用作数据源的np.array的名称相同)。

#  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')

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动