相关疑难解决方法(0)

Pandas:df.groupby(x,y).apply()跨多个列参数错误

基本问题:

我有几个'过去'和'现在'变量,我想执行一个简单的百分比变化' '.例如:((exports_now - exports_past)/exports_past)).

这两个问题实现了这一点,但是当我尝试类似的方法时,我得到一个错误,我的函数增量获得了一个未知参数axis.

数据示例:

exports_ past    exports_ now    imports_ past    imports_ now    ect.(6 other pairs)
   .23               .45             .43             .22              1.23
   .13               .21             .47             .32               .23
    0                 0              .41             .42               .93
   .23               .66             .43             .22               .21
    0                .12             .47             .21              1.23
Run Code Online (Sandbox Code Playgroud)

在第一个问题的答案之后,

我的解决方案是使用这样的函数:

def deltas(row):
    '''
    simple pct change
    '''
    if int(row[0]) == 0 and int(row[1]) == 0:
        return 0
    elif int(row[0]) == 0:
        return np.nan
    else:
        return ((row[1] - row[0])/row[0]) …
Run Code Online (Sandbox Code Playgroud)

python pandas

6
推荐指数
1
解决办法
4272
查看次数

Pandas 中的“元素明智”是什么意思?

我正在努力清楚地理解 Pandas 中“元素”的概念。已经浏览了Pandas 的文档并进行了谷歌搜索,我猜这是某种行?当人们说“按元素应用函数”时,他们的意思是什么?当我阅读这篇文章时出现了这个问题:How to apply a function totwo columns of Pandas dataframe

pandas

5
推荐指数
1
解决办法
8410
查看次数

如何比较同一数据帧的两列?

我有这样的数据帧:

 match_id inn1  bat  bowl  runs1 inn2   runs2   is_score_chased
    1     1     KKR  RCB    222  2      82          1
    2     1     CSK  KXIP   240  2      207         1
    8     1     CSK  MI     208  2      202         1
    9     1     DC   RR     214  2      217         1
   33     1     KKR  DC     204  2      181         1
Run Code Online (Sandbox Code Playgroud)

现在我想通过比较runs1runs2中的值来更改is_score_chased列中的值.如果runs1> runs2,则行中的相应值应为"yes",否则应为no.我尝试了以下代码:

for i in (high_scores1):
  if(high_scores1['runs1']>=high_scores1['runs2']):
      high_scores1['is_score_chased']='yes'
  else:
      high_scores1['is_score_chased']='no' 
Run Code Online (Sandbox Code Playgroud)

但它没有用.如何更改列中的值?

python dataframe pandas

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

Pandas:如何将函数应用于不同的列

假设这是我的功能:

def function(x):
    return x.str.lower()
Run Code Online (Sandbox Code Playgroud)

这是我的 DataFrame (df)

   A         B     C       D 
0  1.67430   BAR  0.34380  FOO 
1  2.16323   FOO -2.04643  BAR
2  0.19911   BAR -0.45805  FOO
3  0.91864   BAR -0.00718  BAR
4  1.33683   FOO  0.53429  FOO
5  0.97684   BAR -0.77363  BAR
Run Code Online (Sandbox Code Playgroud)

我想将该函数仅应用于列BD. (将它应用于完整的 DataFrame 不是答案,因为它会在数字列中产生 NaN 值)。

这是我的基本想法: df.apply(function, axis=1)

但我无法理解如何选择不同的列来应用该函数。我已经尝试过按数字位置、名称等进行索引的所有方式。

我花了很多时间来阅读这个。这不是以下任何一项的直接副本:

如何将函数应用于两列 Pandas 数据框

Pandas:如何对多列使用应用函数

Pandas:对不同的列应用不同的功能

Python Pandas:使用“应用”将 1 个函数应用于多列

python pandas

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

如何将方法应用于 Pandas Dataframe

我有这个数据框

   Col1              Col2

0  A (1000 EUR)  C ( 3000 USD)

1  B (2000 CHF)  D ( 4000 GBP)
Run Code Online (Sandbox Code Playgroud)

我想将其转换为

   Col1  Col2

0  1000  3000

1  2000  4000
Run Code Online (Sandbox Code Playgroud)

我知道如何为 1 列创建数据框(带索引),但不知道如何为多列创建数据框

这段代码产生这个结果

   Col1

0  1000

1  2000 

a = z['Col1'].str.split('(').str[-1].str.split().str[0].apply(pd.to_numeric,errors='coerce')
Run Code Online (Sandbox Code Playgroud)

如何修改上面的代码以添加 col2 (理想情况下使用矢量化而不是迭代)(所以理想情况下我不想为每一列输入相同的代码)

python dataframe pandas

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

Pandas 自定义函数,用于查找是否是第 1、2 等星期一、星期二等 - 欢迎所有建议

所以我有以下代码读取 5 列,日期 ohlc。然后它创建一个列“dow”来保存星期几。到现在为止还挺好:

import numpy as np
import pandas as pd
df = pd.read_csv('/content/drive/MyDrive/Forex/EURUSD-2018_12_18-2020_11_01.csv',parse_dates=True,names = ['date','1','2','3','4',])

df['date'] = pd.to_datetime(df['date'])
df.index = df['date']
df['dow'] = df['date'].dt.dayofweek
#df['downum'] = df.apply(lambda x: downu(x['date']))
df
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

                    date                1       2       3       4       dow
date                        
2018-12-18 00:00:00 2018-12-18 00:00:00 1.13498 1.13497 1.13508 1.13494 1
2018-12-18 00:01:00 2018-12-18 00:01:00 1.13497 1.13500 1.13500 1.13496 1
2018-12-18 00:02:00 2018-12-18 00:02:00 1.13500 1.13498 1.13502 1.13495 1
2018-12-18 00:03:00 2018-12-18 00:03:00 1.13498 1.13513 1.13513 1.13498 1
2018-12-18 00:04:00 2018-12-18 00:04:00 …
Run Code Online (Sandbox Code Playgroud)

python datetime dataframe pandas

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

从具有开始日期和结束日期的数据框列生成日期范围

我有以下 Pandas 数据框:

店铺 物品 价格 开始日期有效 有效结束日期
店铺1 项目1 100.00 2019-01-01 2019-01-06
店铺1 项目1 120.00 2019-01-07 2019-01-10
店铺1 项目2 80.00 2018-12-31 2019-01-03
店铺1 项目2 150.00 2019-01-04 2019-01-06
商店2 项目1 105.00 2019-01-01 2019-01-06
商店2 项目1 130.00 2019-01-07 2019-01-10
商店2 项目2 85.00 2018-12-31 2019-01-03
商店2 项目2 145.00 2019-01-04 2019-01-06

我需要得到下表作为输出:

店铺 物品 日期 价格
店铺1 项目1 2019-01-01 100.00
店铺1 项目1 2019-01-02 100.00
店铺1 项目1 2019-01-03 100.00
店铺1 项目1 2019-01-04 100.00
店铺1 项目1 2019-01-05 100.00
店铺1 项目1 2019-01-06 100.00
店铺1 项目1 2019-01-07 …

python bigdata dataframe pandas

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

将函数应用于两列pandas数据帧以获得两个新列

我有一个带有列Longitude和的pandas数据框Latitude.我想XY他们相处.utm调用from_latlon中有一个函数可以执行此操作.它接收LatitudeLongitude并给出[X,Y].这是我做的:

    def get_X(row):
        return utm.from_latlon(row['Latitude'], row['Longitude'])[0]

    def get_Y(row):
        return utm.from_latlon(row['Latitude'], row['Longitude'])[1] 

    df['X'] = df.apply(get_X, axis=1)
    df['Y'] = df.apply(get_Y, axis=1)
Run Code Online (Sandbox Code Playgroud)

我想定义一个函数get_XYfrom_latlon只应用一次来节省时间.我看了一下这里,这里这里,但我找不到用一个apply函数制作两列的方法.谢谢.

python apply multiple-columns pandas

0
推荐指数
1
解决办法
7761
查看次数

标签 统计

pandas ×8

python ×7

dataframe ×4

apply ×1

bigdata ×1

datetime ×1

multiple-columns ×1