我有下面的熊猫数据框。
d = {'col1': [1, 2,3,4,5,60,0,0,6,3,2,4],'col3': [1, 22,33,44,55,60,1,5,6,3,2,4],'Name': ['2a df a1asd_V1', 'xcd a2asd_V3','23vg aabsd_V1','dfgdf_aabsd_V0','a3as d_V1','aa bsd_V3','aasd_V4','aabsd_V4','aa_adn sd_V15',np.nan,'aasd_V12','aasd120Abs'],'Date': ['2021-06-13', '2021-06-13','2021-06-13','2021-06-14','2021-06-15','2021-06-15','2021-06-13','2021-06-16','2021-06-13','2021-06-13','2021-06-13','2021-06-16']}
dff = pd.DataFrame(data=d)
dff
col1 col3 Name Date
0 1 1 2a df a1asd_V1 2021-06-13
1 2 22 xcd a2asd_V3 2021-06-13
2 3 33 23vg aabsd_V1 2021-06-13
3 4 44 dfgdf_aabsd_V0 2021-06-14
4 5 55 a3as d_V1 2021-06-15
5 60 60 aa bsd_V3 2021-06-15
6 0 1 aasd_V4 2021-06-13
7 0 5 aabsd_V4 2021-06-16
8 6 6 aa_adn sd_V10 2021-06-13
9 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将两个数据帧与这些条件连接起来:
代码可以运行,但在情况 2 中列名称丢失。为什么?Pandas 文档中似乎没有提到这一点。或者我错过了什么?
如何保留列名?
代码 :
# Testing
# Merge, join, concatenate
# Pandas documentation : https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html
df1 = pd.DataFrame(
{
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"],
"C": ["C0", "C1", "C2", "C3"],
"D": ["D0", "D1", "D2", "D3"],
},
#index=[0, 1, 2, 3],
)
df2 = pd.DataFrame(
{
"A": ["A4", "A5", "A6", "A7"],
"B": ["B4", "B5", "B6", "B7"],
"C": ["C4", "C5", "C6", "C7"],
"D": ["D4", "D5", "D6", "D7"],
},
#index=[4, 5, 6, 7], …
Run Code Online (Sandbox Code Playgroud) 我有两个清单:
A:[[0, 1], [2, [3]], 4]
乙:[5, 6, 7, 8, 9]
我希望列表 B 可以与列表 A 具有相同的形状:
[5, 6, 7, 8, 9]
=>[[5, 6], [7, [8]], 9]
因此列表 A 和列表 B 具有相同的维度/形状:
A:[[0, 1], [2, [3]], 4]
乙:[[5, 6], [7, [8]], 9]
考虑一下时间复杂度,如果可能的话,希望有一种O(n)的方法。
我有一个pandas.DataFrame
表格
index df df1
0 0 111
1 1 111
2 2 111
3 3 111
4 0 111
5 2 111
6 3 111
7 0 111
8 2 111
9 3 111
10 0 111
11 1 111
12 2 111
13 3 111
14 0 111
15 1 111
16 2 111
17 3 111
18 1 111
19 2 111
20 3 111
Run Code Online (Sandbox Code Playgroud)
我想创建一个数据框,其中df列重复 0,1,2,3。但数据中缺少一些东西。我试图通过附加行值来用 0 填充空白。这是我的预期结果:
index df df1
0 0 …
Run Code Online (Sandbox Code Playgroud) 我想删除我的所有标志,dataframe
将其保留为两种格式之一:100-200
或200
因此,如果给出了一系列工资,则工资之间应该有一个连字符,否则是一个干净的单个数字。
\n我有以下数据:
\nimport pandas as pd\nimport re\ndf = {'salary':['\xc2\xa326,768 - \xc2\xa330,136/annum Attractive benefits package',\n '\xc2\xa326,000 - \xc2\xa328,000/annum plus bonus',\n '\xc2\xa321,000/annum',\n '\xc2\xa326,768 - \xc2\xa330,136/annum Attractive benefits package',\n '\xc2\xa333/hour', \n '\xc2\xa318,500 - \xc2\xa320,500/annum Inc Bonus - Study Support + Bens',\n '\xc2\xa327,500 - \xc2\xa330,000/annum \xc2\xa327,500 to \xc2\xa330,000 + Study',\n '\xc2\xa335,000 - \xc2\xa340,000/annum',\n '\xc2\xa324,000 - \xc2\xa327,000/annum Study Support (ACCA / CIMA)',\n '\xc2\xa319,000 - \xc2\xa324,000/annum Study Support',\n '\xc2\xa330,000 - \xc2\xa335,000/annum', \n '\xc2\xa344,000 - \xc2\xa366,000/annum + 15% …
Run Code Online (Sandbox Code Playgroud) 我们假设以下无向图:
import networkx as nx
G = nx.from_edgelist([(0, 3), (0, 1), (2, 5), (0, 3)])
G.add_nodes_from(range(7))
Run Code Online (Sandbox Code Playgroud)
甚至添加 (1, 3) 边(这里并不重要):
连接的组件是:
list(nx.connected_components(G))
# [{0, 1, 3}, {2, 5}, {4}, {6}]
Run Code Online (Sandbox Code Playgroud)
是否可以G
直接从连接组件列表生成图形networkx
?或者使用简单的方法?
到目前为止,我发现的唯一解决方案是生成每组的连续边或节点的所有组合并将其提供给nx.from_edgelist
,然后使用以下命令添加单个节点add_nodes_from
:
from itertools import pairwise, chain
l = [{0, 1, 3}, {2, 5}, {4}, {6}]
G = nx.from_edgelist(chain.from_iterable(pairwise(e) for e in l))
G.add_nodes_from(set.union(*l))
Run Code Online (Sandbox Code Playgroud)
或对于所有边:
from itertools import combinations, chain
l = [{0, 1, 3}, {2, 5}, {4}, {6}]
G …
Run Code Online (Sandbox Code Playgroud) 这是一个看似简单的问题,但事实证明有点令人烦恼。我有一个染色体列表(有 23 条染色体 - 染色体 1 到 21,然后是染色体 X 和染色体 Y),如下所示:
['chr11','chr14','chr16','chr13','chr4','chr13','chr2','chr1','chr2','chr3','chr14','chrX',]
我想按以下顺序对其进行排序:
['chr1', 'chr2','chr2','chr3','chr4','chr11','chr13','chr13', 'chr14','chr14','chr16','chrX']
然而,由于 python 的字典顺序性质,sort
它会进行排序chr1, chr10, chr11, chr12...chr2,
等,因为我有 X 染色体,按整数值排序似乎也不是一个选项。我可能需要指定一个唯一的键来对列表进行排序吗?或者我缺少某种明显的解决方案。
我的目标是找出以下 df 是否有“循环”
给定:
df = pd.DataFrame({'From':['USA','UK','France','Italy','Russia','china','Japan','Australia','Russia','Italy'],
'to':['UK','France','Italy','Russia','china','Australia','New Zealand','Japan','USA','France']})
df
Run Code Online (Sandbox Code Playgroud)
如果我绘制它,它看起来像这样(最终,请注意 df 上的顺序是不同的):
USA-->UK-->France-->Italy-->Russia-->China-->Australia-->Japan-->Australia
| |
| |
France USA
Run Code Online (Sandbox Code Playgroud)
关键是:你不能倒退,所以意大利不能去法国,俄罗斯不能去美国。
注意:From可以有多个Tos
我可以在没有 pandas 的情况下解决它(我得到df.to_dict('records')
然后迭代以找到循环,然后返回到 pandas),但我希望留在 pandas 上。
我有一家公司的股票价格清单。现在我想将列表拆分为多个间隔。我们将存储价格,如下所示:前 2 个元素,然后是接下来的 3 个元素,然后是 2 个元素,依此类推。
meta_stocks = [10, 9, 11, 15, 19, 22, 25, 11, 15, 17]
Run Code Online (Sandbox Code Playgroud)
输出
meta_stocks = [[10, 9],[11, 15, 19],[22, 25],[ 11, 15, 17]]
Run Code Online (Sandbox Code Playgroud)
我可以将列表拆分为每个项目 5 个,但无法进一步拆分
>>> [meta_stocks[i:i+interval2] for i in range(0, len(meta_stocks), interval2)]
>>> [[10, 9, 11, 15, 19], [22, 25, 11, 15, 17]]
Run Code Online (Sandbox Code Playgroud) 我有以下带有正整数的 numpy 数组,按升序排列:
import numpy as np
arr = np.array([222, 225, 227, 228, 230, 232, 241, 243, 244, 245, 252, 253, 258])
Run Code Online (Sandbox Code Playgroud)
我想将其分成几部分,其中在每个部分,每个数字与下一个数字的最大差异。2
因此以下数组应拆分为:
[[222], [225,227,228,230,232], [241, 243, 244, 245], [252, 253], [258]]
Run Code Online (Sandbox Code Playgroud)
我有什么想法可以实现这一目标吗?