我知道有一些方法可以在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种情况:
感谢大伙们。
我有一个如下所示的数据框:
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)
谢谢。
在 Athena 中,用 0 填充空值的最有效方法是什么?
我想我可以使用Case语句,但我也很好奇是否还有其他方法可以做到这一点。
我必须复制列中具有特定值的行,并将该值替换为另一个值.
例如,我有这些数据:
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)
请帮我解决这个问题.谢谢.
我有一个包含大量列的数据框。然而,在这个问题中,我带来了 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)
减去两列很容易但是
很难。
感谢您的帮助。
我有与此查询聚合的数组:
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)
但它返回的输出全部为空白。
我有一个日期第一列的数据框。
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,但似乎没有此功能。请在这里帮助我。非常感谢。