这是我的df的简化示例:
ds = pd.DataFrame(np.abs(randn(3, 4)), index=[1,2,3], columns=['A','B','C','D'])
ds
A B C D
1 1.099679 0.042043 0.083903 0.410128
2 0.268205 0.718933 1.459374 0.758887
3 0.680566 0.538655 0.038236 1.169403
我想按行对列中的数据求和:
ds['sum']=ds.sum(axis=1)
ds
A B C D sum
1 0.095389 0.556978 1.646888 1.959295 4.258550
2 1.076190 2.668270 0.825116 1.477040 6.046616
3 0.245034 1.066285 0.967124 0.791606 3.070049
现在,我的问题来了!我想创建4个新列,并从每一行的总和中计算百分比值。因此,第一个新列中的第一个值应该是(0.095389 /
4.258550),第二个新列中的第一个值(0.556978 / 4.258550)…依此类推…请帮助
您可以像这样手动轻松地为每个列执行此操作:
df['A_perc'] = df['A']/df['sum']
如果您要一步一步对所有列进行此操作,则可以使用div
方法(http://pandas.pydata.org/pandas-
docs/stable/basics.html#matching-broadcasting-
behavior
):
ds.div(ds['sum'], axis=0)
如果要一步将其添加到同一数据框中,请执行以下操作:
>>> ds.join(ds.div(ds['sum'], axis=0), rsuffix='_perc')
A B C D sum A_perc B_perc \
1 0.151722 0.935917 1.033526 0.941962 3.063127 0.049532 0.305543
2 0.033761 1.087302 1.110695 1.401260 3.633017 0.009293 0.299283
3 0.761368 0.484268 0.026837 1.276130 2.548603 0.298739 0.190013
C_perc D_perc sum_perc
1 0.337409 0.307517 1
2 0.305722 0.385701 1
3 0.010530 0.500718 1
我有两个不同形状的df。一个包含单词及其频率,另一个包含单词及其引理。 第一个df总是将一个单词映射到一个频率,第二个df将许多单词映射到一个引理(多次)。例如: DF1: 和df2: 我想将引理信息添加到,通过搜索的每个单词,将其与中的单词进行比较,并从中提取引理信息以将其添加回。 对于df1中的值是否始终相同,有一些有用的答案,但由于我想对每一行中包含不同单词的行执行此操作,因此我不确定如何继
问题内容: 如果我有一个包含多列的数据框,如何只填充一列?还是一组列? 我只知道如何按轴进行操作。 问题答案: tl; dr: 我还添加了一个自我包含的示例:
然后,我会添加初始值,然后查看这个数据,从前面的行计算新行,例如左右。 我目前使用的代码如下所示,但我觉得它有点难看,必须有一种方法直接使用DataFrame来实现这一点,或者只是一种更好的方法。注意:我使用的是Python2.7。
我从熊猫数据帧文档开始:数据结构简介 我想在一个时间序列类型的计算中迭代地填充数据帧。所以基本上,我想用列A、B和时间戳行初始化数据帧,全0或全NaN。 然后,我会添加初始值并检查这些数据,根据之前的行计算新行,比如说< code > row[A][t]= row[A][t-1]1 左右。 我目前正在使用下面的代码,但我觉得它有点难看,必须有一种方法直接用数据帧来做这件事,或者一般来说是一种更好的
问题内容: 我正在使用pandas库,我想将两个新列添加到具有n列(n> 0)的数据框中。 这些新列是由于将函数应用于数据框中的某一列而产生的。 要应用的功能如下: 为仅返回值的函数创建新列的一种方法是: 所以,我想要的但尝试失败的(*)是这样的: 实现此目的的最佳方法是什么?我毫无头绪地扫描了文档。 *返回一个熊猫系列,每个项目都由一个元组z,y组成。尝试将其分配给两个数据框列会产生ValueE
问题内容: 我有一个如下所示的df: 我正在尝试创建一个如下所示的df: 我试过了 但这不是我要寻找的。 任何指导表示赞赏 问题答案: 那不是新的专栏,而是新的DataFrame: 要获得想要的结果,请使用: 要获得“新列”,您可以使用transform: 我建议阅读docs的split- apply-combine部分 。