我有一个大型数据集,列出了全国不同地区的竞争产品.我希望通过使用这些新数据帧名称中的列值的迭代过程将此数据帧拆分为基于该区域的其他几个数据帧,以便我可以单独使用每个数据框 - 例如,按价格对每个区域中的信息进行排序以了解每个市场的情况如何.我已经给出了以下数据的简化版本:
Competitor Region ProductA ProductB
Comp1 A £10 £15
Comp1 B £11 £16
Comp1 C £11 £15
Comp2 A £9 £16
Comp2 B £12 £14
Comp2 C £14 £17
Comp3 A £11 £16
Comp3 B £10 £15
Comp3 C £12 £15
Run Code Online (Sandbox Code Playgroud)
我可以使用以下内容创建区域列表:
region_list=df['Region'].unique().tolist()
Run Code Online (Sandbox Code Playgroud)
我希望在一个产生大量数据帧的迭代循环中使用它,例如
df_A :
Competitor Region ProductA ProductB
Comp1 A £10 £15
Comp2 A £9 £16
Comp3 A £11 £16
Run Code Online (Sandbox Code Playgroud)
我可以使用代码手动为每个区域执行此操作
df_A=df.loc[df['Region']==A]
Run Code Online (Sandbox Code Playgroud)
但实际情况是,这个数据集有很多区域会使这段代码繁琐.有没有办法创建一个可以复制它的迭代循环?有一个类似的问题,询问有关拆分数据帧的问题,但答案并未说明如何根据每个列值标记输出.
我对Python很陌生并且还在学习,所以如果实际上有一种不同的,更明智的方法来解决这个问题,我会非常乐于接受建议.
我对Python编码很陌生,所以我试图掌握一些基础知识 - 任何输入都值得赞赏.
我有一个每周日期的列表,并且我试图在日期运行'if'语句,即如果日期数小于7,则创建一个具有因子x的列,或者创建一个因子y - 如同下表:
week day check factor
0 2017-01-08 8 False x
1 2017-01-15 15 False x
2 2017-01-22 22 False x
3 2017-01-29 29 False x
4 2017-02-05 5 True y
Run Code Online (Sandbox Code Playgroud)
我试过下面的代码:
if df['day'] <7 :
factor=weeks['day']/7
else:
....
Run Code Online (Sandbox Code Playgroud)
并得到一个错误:
ValueError: The truth value of a Series is ambiguous
Run Code Online (Sandbox Code Playgroud)
我已经研究过,并且理解上面的代码试图测试整个列,因此不能有明确的真/假响应.我已经看到了关于所有/任何的一些评论,但这些也没有给我我正在寻找的答案.有没有办法测试列中的每个项目并根据值返回不同的输出?
我在 Python 数据框中有一些地址信息,我想检查其中一列的第一个字符是否是数字。我发现了类似的查询,但数据框中没有任何内容。我可以使用以下命令毫无问题地提取第一个字符:
check = df['ADDRESS_LINE_1'].str[0]
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试
check = df['ADDRESS_LINE_1'].str[0].isdigit()
Run Code Online (Sandbox Code Playgroud)
我收到错误
'Series' object has no attribute 'isdigit'
Run Code Online (Sandbox Code Playgroud)
我找不到等效的代码来让它在数据框中工作。我还尝试创建一个包含检查信息的新列,但这会导致相同的错误。任何帮助表示赞赏。