我想在Pandas数据集中创建一个新列,基于另外两个列的值。
+-----------+----------+
| Column_1 | Column_2 |
+-----------+----------+
| a | c |
+-----------+----------+
| b | d |
+-----------+----------+
现在,new\u列
应该如下所示:
+-----------+----------+------------+
| Column_1 | Column_2 | new_column |
+-----------+----------+------------+
| a | c | a,c |
+-----------+----------+------------+
| b | d | b,d |
+-----------+----------+------------+
有什么帮助吗?
您可以在应用concat
的同时创建一个辅助数据框(df_new
),以便取消生成的索引
列以及统一列。然后使用apply(lambda x:','.join(x))
在通过新的索引
列进行分组后,例如
import pandas as pd
fields = {'Column_1': ['a','b'],
'Column_2': ['c','d']
}
df=pd.DataFrame(fields)
df_new = pd.concat([df[i] for i in df.columns]).reset_index()
df['new_column']=df_new.groupby(['index'])[0].apply(lambda x: ','.join(x)).reset_index()[0]
我用了这个,它工作得很好:
df['new_column'] = df['Column_1']+ ' , ' +df['Column_2']
我想将我的自定义函数(它使用if-else梯形)应用到数据帧每行中的这六列(,,,,,)。 我已经尝试了不同的方法从其他问题,但似乎仍然不能找到正确的答案,我的问题。关键的一点是,如果这个人被算作西班牙裔,他们就不能算作其他任何东西。即使他们在另一个种族栏中有一个“1”,他们仍然被算作西班牙裔,而不是两个或两个以上的种族。类似地,如果所有ERI列的总和大于1,则被计为两个或两个以上的种族,不能被计
我有一个pandas dataframe,需要根据dataframe中其他列的值创建新列。这是数据帧 人城市国家国家 美国伊利诺伊州芝加哥 美国亚利桑那州凤凰城B酒店 C美国加利福尼亚州圣地亚哥 我想根据state中的值创建两个新列 创建新列df[“城北”]=df[“城市”]其中state=“伊利诺伊” 创建新列df[“城市南部”]=df[“城市”],其中州不等于“伊利诺伊州” 我试过了 但是不等
我正在使用pyspark下面是我的数据
我有两个熊猫数据框 步骤2:对于flag=1的行,AA_new将计算为var1(来自df2)*组“A”和val“AA”的df1的'cal1'值*组“A”和val“AA”的df1的'cal2'值,类似地,AB_new将计算为var1(来自df2)*组“A”和val“AB”的df1的'cal1'值*组“A”和val“AB”的df1的'cal2'值 我的预期输出如下所示: 以下基于其他stackflow
问题内容: 我想申请我的自定义函数(它使用的梯)这六个列我的数据帧的每一行中)。 我尝试了与其他问题不同的方法,但似乎仍然找不到适合我问题的正确答案。关键在于,如果该人被视为西班牙裔,就不能被视为其他任何人。即使他们在另一个种族栏中的得分为“ 1”,他们仍然被视为西班牙裔,而不是两个或两个以上的种族。同样,如果所有ERI列的总和大于1,则将它们计为两个或多个种族,并且不能计为唯一的种族(西班牙裔除
我有以下问题,因为我是pyspark的新手。基于来自两列的值的条件,我想填充第三列。条件是: < li >如果分号包含在col2中,请检查col1 < ul > < li >如果col1 == 1,则取分号前的值 < li >如果col1 == 2,则取分号后的值 这就是数据帧的样子。 我创建了下面的udf,它给出了错误“不能将列转换为布尔值:请使用” 我通过谷歌搜索各种功能构建了这个udf,所以