python - 从现有列构造新列而不在熊猫中重新指定数据框
问题描述
如果您想从其他列在数据框中创建一个新列,您可以在 R 中非常简洁地编写它。但是在 Python 中,我还没有找到这样做的方法,因为我必须在每次使用列时声明数据框我没有记错。我有一种方法可以说明要使用哪个数据框,之后您只需要指定列吗?我在下面举两个例子来说明我的观点。
在 Python 中:
my_dataframe=pd.DataFrame({'col1':[1.0,2.0,3.0],
'col2':[4.0,5.0,6.0],
'col3':[0.25,0.25,0.25],
'first_column':[0.5,0.5,0.5],
'second_column':[1.0,2.0,3.0],
'third_column':[4.0,5.0,6.0],
'fourth_column':[0.25,0.25,0.25]})
my_dataframe['new_column'] = my_dataframe['col1'] - (my_dataframe['third_column'] / my_dataframe['fourth_column']) * my_dataframe['second_column']
在 R 中
my_dataframe <- data_frame(col1 = c(1,2,3),
col2 = c(4,5,6),
col3 = c(0.25, 0.25, 0.25),
first_column = c(0.5, 0.5, 0.5),
second_column = c(1, 2, 3),
third_column = c(4, 5, 6),
fourth_column = c(0.25, 0.25, 0.25))
my_dataframe <- my_dataframe %>% mutate(new_column = col1 - (third_column / fourth_column) * second_column)
我能达到的最接近的方法是使用如下示例中的 lambda,它非常干净,但是列自动完成功能不起作用。因此,我的问题是,是否有另一种我没有想到的既干净又提供自动完成的方法?
df = pd.DataFrame({'A': [1, 2, 3]})
df.assign(B=df.A, C=lambda x:x['A']+ x['B'])
解决方案
试试 df.apply
df = pd.DataFrame({'A': [1, 2, 3]})
Then
df['B'] = df.apply(lambda x:x['A'], axis=1)
df['C'] = df.apply(lambda x:x['A']+x['B'] , axis=1)
输出
A B C
0 1 1 2
1 2 2 4
2 3 3 6
推荐阅读
- django - Django save() 方法保存 3 个字段中的 2 个。第三个没有发现错误但不会保存
- android - 可以在 Unity 中使用 Swift 代码并将其导出到 Android 和 iOS
- android - 如何根据 ViewPager2/TabView 中的 Fragment 更改 android 活动的标题
- intel - 让 perf 在较新的处理器上正确使用某些性能计数器
- python - 使用 Python 在 json 字符串中查找信息
- c++ - C ++ / C项目中的Getter和Setter?
- c++ - Swift memcpy 与 ZMQ zmq_msg_data 一起使用时没有任何效果
- sql - 排除重叠时间段
- java - 如何从android java中的警报框中获取文本视图中的编辑文本值?
- php - 如何根据外键从表中获取多个值?