小编Yun*_*ang的帖子

熊猫如何交换或重新排序列

我知道有一些方法可以在python pandas中交换列顺序。假设我有以下示例数据集:

import pandas as pd    
employee = {'EmployeeID' : [0,1,2],
     'FirstName' : ['a','b','c'],
     'LastName' : ['a','b','c'],
     'MiddleName' : ['a','b', None],
     'Contact' : ['(M) 133-245-3123', '(F)a123@gmail.com', '(F)312-533-2442 jimmy234@gmail.com']}

df = pd.DataFrame(employee)
Run Code Online (Sandbox Code Playgroud)

一种基本的方法是:

neworder = ['EmployeeID','FirstName','MiddleName','LastName','Contact']
df=df.reindex(columns=neworder)
Run Code Online (Sandbox Code Playgroud)

但是,如您所见,我只想交换两列。仅仅因为只有4列是可行的,但是如果我有100列怎么办?交换列或重新排序列的有效方法是什么?

可能有2种情况:

  1. 当您只想交换2列时。
  2. 当您想重新排列3列。(我很确定,这种情况可以应用于3列以上。)

感谢大伙们。

python swap multiple-columns pandas

3
推荐指数
4
解决办法
9833
查看次数

如何使用两列来区分熊猫数据框中的数据点

我有一个如下所示的数据框:

import pandas as pd
df = pd.DataFrame({'a':[1,2,3], 'b':[[1,2,3],[1,2,3],[1,2,3]], 'c': [[4,5,6],[4,5,6],[4,5,6]]})
Run Code Online (Sandbox Code Playgroud)

我想用 b 列和 c 列爆炸数据框。我知道如果我们只使用一列那么我们可以做

df.explode('column_name')
Run Code Online (Sandbox Code Playgroud)

但是,我找不到使用两列的方法。所以这是所需的输出。

output = pd.DataFrame({'a':[1,1,1,2,2,2,3,3,3], 'b':[1,2,3,1,2,3,1,2,3], 'c': [4,5,6,4,5,6,4,5,6]})
Run Code Online (Sandbox Code Playgroud)

我试过了

df.explode(['a','b'])
Run Code Online (Sandbox Code Playgroud)

但它不起作用并给了我一个

ValueError: column must be a scalar.
Run Code Online (Sandbox Code Playgroud)

谢谢。

python explode dataframe pandas

3
推荐指数
1
解决办法
99
查看次数

如何在 AWS Athena 中用 0 填充空值

在 Athena 中,用 0 填充空值的最有效方法是什么?

我想我可以使用Case语句,但我也很好奇是否还有其他方法可以做到这一点。

null nan amazon-web-services

3
推荐指数
1
解决办法
1万
查看次数

复制列中具有特定值的行

我必须复制列中具有特定值的行,并将该值替换为另一个值.

例如,我有这些数据:

import pandas as pd    
df = pd.DataFrame({'Date': [1, 2, 3, 4], 'B': [1, 2, 3, 2], 'C': ['A','B','C','D']})
Run Code Online (Sandbox Code Playgroud)

现在,我想复制"B"列中有2的行,然后将2更改为4

df = pd.DataFrame({'Date': [1, 2, 2, 3, 4, 4], 'B': [1, 2, 4, 3, 2, 4], 'C': ['A','B','B','C','D','D']})
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.谢谢.

python dataframe pandas

2
推荐指数
1
解决办法
62
查看次数

减去以特定模式命名的两列

我有一个包含大量列的数据框。然而,在这个问题中,我带来了 df 的迷你版本。

df = pd.DataFrame({'WT_IGL_x':[1,2,3,2,1,1,3,4,1,2], 'LA_WHN_x':[1,0,1,0,1,1,0,0,1,0], 'LA_WHN_y':[2,1,2,3,3,4,1,1,2,1], 'WT_IGL_y':[2,1,2,3,3,4,1,1,2,1], 'GT_OPP_IGL_x':[1,2,3,2,1,1,3,4,1,2], 'GT_OPP_IGL_y':[1,2,3,2,1,1,3,4,1,2]})
Run Code Online (Sandbox Code Playgroud)

我想减去具有相同前缀和中间部分的两列。在这种情况下,第 1/4 列和第 2/3 列并添加具有差异的列并通过添加后缀来命名它们'_diff'

所以我想要的输出是:

df = pd.DataFrame({'WT_IGL_x':[1,2,3,2,1,1,3,4,1,2], 'LA_WHN_x':[1,0,1,0,1,1,0,0,1,0], 'LA_WHN_y':[2,1,2,3,3,4,1,1,2,1], 'WT_IGL_y':[2,1,2,3,3,4,1,1,2,1], 'WT_IGL_diff': [-1, 1, 1, -1, -2, -3, 2, 3, -1, 1], 'LA_WHN_diff': [-1, -1, -1, -3, -2, -3, -1, -1, -1, -1], GT_OPP_IGL_diff: [0,0,0,0,0,0,0,0,0,0]})
Run Code Online (Sandbox Code Playgroud)

减去两列很容易但是

  1. 将两列与模式匹配
  2. 添加具有差异的列
  3. 使用后缀'_diff'自动命名列

很难。

感谢您的帮助。

dataframe pandas

2
推荐指数
1
解决办法
104
查看次数

如何从 Athena 数组中删除 NULL

我有与此查询聚合的数组:

select field_name1, 
       field_name2, 
       "array_agg"(DISTINCT <field_name3>) "array_agg"
from <table_name>
group by <field_name1>
Run Code Online (Sandbox Code Playgroud)

问题是某些输出中包含 NULL 值。

['element1', 'element2', NULL]
Run Code Online (Sandbox Code Playgroud)

聚合值时如何从数组中删除 NULL。

我努力了

select field_name1, 
       field_name2, 
       "array_remove"("array_agg"(DISTINCT <field_name1>), NULL) "array_agg_drop_NULL""array_agg"
from <table_name>
group by <field_name1>
Run Code Online (Sandbox Code Playgroud)

但它返回的输出全部为空白。

sql arrays presto amazon-athena trino

2
推荐指数
1
解决办法
3049
查看次数

在日期栏中更改年份

我有一个日期第一列的数据框。

import pandas as pd    
df = pd.DataFrame({'Date': ['8/4/2014','8/5/2014','8/14/2014','8/21/2014','8/23/2015','8/24/2015']})
Run Code Online (Sandbox Code Playgroud)

我想将2014年更改为2015年,将2015年更改为2016年。

我在看pandas.datetime,但似乎没有此功能。请在这里帮助我。非常感谢。

python date dataframe pandas

1
推荐指数
3
解决办法
69
查看次数