例如,我有一个熊猫数据框,如下所示:
col_1 col_2 col_3 col_4
a X 5 1
a Y 3 2
a Z 6 4
b X 7 8
b Y 4 3
b Z 6 5
我想为col_1中的每个值添加col_3和col_4中的值(以及更多列),这些值与col_2中的X和Z对应,并使用这些值创建新行。因此输出如下:
col_1 col_2 col_3 col_4
a X 5 1
a Y 3 2
a Z 6 4
a NEW 11 5
b X 7 8
b Y 4 3
b Z 6 5
b NEW 13 13
另外,col_1中可能会有更多需要相同处理的值,因此我无法明确引用“ a”和“
b”。我尝试使用groupby(’col_1’)和apply()的组合,但无法正常工作。我与下面的内容足够接近,但是我无法在col_2中将“
NEW”放置在col_1中并保留原始值(a或b等)。
df.append(df[(df['col_2'] == 'X') | (df['col_2'] == 'Z')].groupby('col_1').mean())
谢谢。
如果可以保证X
并且Z
仅在组中出现一次,则可以使用groupby
andpd.concat
操作:
new = df[df.col_2.isin(['X', 'Z'])]\
.groupby(['col_1'], as_index=False).sum()\
.assign(col_2='NEW')
df = pd.concat([df, new]).sort_values('col_1')
df
col_1 col_2 col_3 col_4
0 a X 5 1
1 a Y 3 2
2 a Z 6 4
0 a NEW 11 5
3 b X 7 8
4 b Y 4 3
5 b Z 6 5
1 b NEW 13 13
Navicat 通常标识用户在表输入的字符串为一般字符串,任何特殊字符或函数将被处理为纯文本(即是它的功能会被忽略)。 在“原始数据模式”编辑数据是一个方便和直接的方法来应用服务器的内置函数。若要使用原始数据模式功能,只需简单地选择“查看”->“显示”->“原始数据模式”。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。
Navicat 通常标识用户在表输入的字符串为一般字符串,任何特殊字符或函数将被处理为纯文本(即是它的功能会被忽略)。 在“原始数据模式”编辑数据是一个方便和直接的方法来应用服务器的内置函数。若要使用原始数据模式功能,只需简单地选择“查看”->“显示”->“原始数据模式”。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。
Navicat 通常标识用户在表输入的字符串为一般字符串,任何特殊字符或函数将被处理为纯文本(即是它的功能会被忽略)。 在“原始数据模式”编辑数据是一个方便和直接的方法来应用服务器的内置函数。若要使用原始数据模式功能,只需简单地选择“查看”->“显示”->“原始数据模式”。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。
问题内容: 我在IPython中具有以下数据框,其中每一行都是一只股票: 我想应用一个groupby操作,该操作计算“ yearmonth”列中每个日期的所有内容的上限加权平均回报。 这按预期工作: 但是,然后我想将这些值“广播”回原始数据帧中的索引,并将它们保存为日期匹配的常量列。 我意识到这种天真的任务不起作用。但是,将groupby操作的结果分配给父数据帧上新列的“正确” Pandas习惯用
我有一个数据帧: 我需要添加第一行[2,3,4]来获得: 我尝试了和函数,但找不到正确的方法。 如何添加/插入系列到数据框?
我正在为我的网站做一个注册页面。我在PHPMyAdmin中维护一个包含7个字段的数据库(id、用户名、密码、电子邮件、活动、代码和日期)。我正在使用代码和活动字段来实现电子邮件激活。注册表单使用post方法获取4个参数(名称、电子邮件、密码和重新键入密码),并将提交按钮的信息传递给PHP代码,以检查用户是否是新的,电子邮件ID是否应该是新的,并在单击提交按钮后检查空字段。PHP代码如下所示: 当我