小编ank*_*_91的帖子

如何使用 python 将 Pandas 数据帧数据存储到 azure blob?

我想将处理过的数据存储在 Pandas 数据框中,以镶木地板文件格式存储为天蓝色的 blob。但在上传到 blob 之前,我必须将其作为 parquet 文件存储在本地磁盘中,然后上传。想把pyarrow.table写成pyarrow.parquet.NativeFile直接上传。谁能帮我这个。下面的代码工作正常:

import pyarrow as pa
import pyarrow.parquet as pq

battery_pq = pd.read_csv('test.csv')
Run Code Online (Sandbox Code Playgroud) ######## 一些数据处理
battery_pq = pa.Table.from_pandas(battery_pq)
pq.write_table(battery_pq,'example.parquet')
block_blob_service.create_blob_from_path(container_name,'example.parquet','example.parquet')
Run Code Online (Sandbox Code Playgroud)

需要在内存中创建文件(I/O 文件类型对象),然后将其上传到 blob。

python blob azure pandas parquet

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

根据列的计数值的数据框子集

表(df):

customer_id    Order_date 
    1       2015-01-16      
    1       2015-01-19      
    2       2014-12-21      
    2       2015-01-10      
    1       2015-01-10
    3       2018-01-18
    3       2017-03-04
    4       2019-11-05
    4       2010-01-01
    3       2019-02-03
    3       2020-01-01
    3       2018-01-01
Run Code Online (Sandbox Code Playgroud)

需要的输出: df 的一个子集,其中 customer_IDs 有超过 3 个 order_dates。(跳过 2,4 和 5 客户 ID,因为他们的 order_dates 少于 3 个)

 Customer_id  Number_of_Order_dates
     1          3
     3          5
Run Code Online (Sandbox Code Playgroud)

我试过 groupby 但它没有工作来创建一个子集。请帮忙。

到目前为止尝试过的代码失败了:

df[df['days'].count()>3]
Run Code Online (Sandbox Code Playgroud)

还有一个我试过的,这是不正确的:

 df1=df.groupby('customer_id')['order_date'].count()
 df[df1.iloc[:,1]]
Run Code Online (Sandbox Code Playgroud)

python group-by subset pandas

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

Pandas将列转换为行

我有一个像这样的pandas数据帧:

DATE     NAME    INCOME   EXPENSE
201811    XX      100      50
Run Code Online (Sandbox Code Playgroud)

我需要像这样转置(长格式):

DATE     NAME    ATTRIBUTE  ATTRIBUTE_VALUE
201811    XX      INCOME      100
201811    XX      EXPENSE      50
Run Code Online (Sandbox Code Playgroud)

我查看了pandas转置函数,但我不确定如何从宽格式转换为长格式

pandas

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

我将如何在熊猫中选择匹配字符串列表的行,而不仅仅是一个特定的字符串?

假设我们有一个 dataframe-df 和一个标记为“A”的列。对于选择匹配一个字符串 -'some_string' 的行,df['A'].str.contains('some_string') 效果很好。

我的问题是,是否有相应的方法传递给包含字符串列表,以便可以获得部分匹配?我可以给它一个字符串列表而不是 'some_string' 吗?我试图避免使用 for 循环和切片数据帧并连接到一个新的数据帧。

假设数据框是

pd.DataFrame(np.array([['cat', 2], ['rat', 5], ['ball', 8],['string', 8]]),columns=['A', 'B']))
Run Code Online (Sandbox Code Playgroud)

list =['at','ll','ac']
Run Code Online (Sandbox Code Playgroud)

所以我想选择带有猫、老鼠、球的行。对不起,人为设计的例子。

python pandas

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

从 df.isnull().sum() 中删除非零字段

我正在使用Pandas 数据框中df.isnull().sum()NaN值计数。

有没有办法只显示不为零的值计数(即,如果该列有 0 个 NaN,则不显示在值计数中。

这是结果,我想删除 0 值

Job ID                              0
Agency                              0
Posting Type                        0
# Of Positions                      0
Business Title                      0
Civil Service Title                 0
Title Code No                       0
Level                               0
Job Category                        2
Full-Time/Part-Time indicator     261
Salary Range From                   0
Salary Range To                     0
Salary Frequency                    0
Work Location                       0
Division/Work Unit                  0
Job Description                     0
Minimum Qual Requirements          14
Preferred Skills                  377
Additional Information           1177
To Apply                            1
Hours/Shift                      2123
Work …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

想要通过选择另一列中定义的公式来计算新列的值

我有一个nf动态计算的列数的df。在该df中,它有一个列,该列定义了我需要使用什么公式来计算另一新列的值。该公式需要应用于该df的现有列

例如:df1

Col1  Col2 Col3 Col4(Formula)        Col5(Calculatedby executingformulain Col4
2017  12   2    Col2/col3            6
2018  14   7    Col2*Col3            98
Run Code Online (Sandbox Code Playgroud)

所以我想要在Col4中编写的任何公式都将在给定的现有列上执行,以便可以在每一行计算col5的新值

python pandas

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

如何在 Python 中有效地从 n 个元素的集合列表中创建 n+1 个元素的集合列表?

假设我有一个包含两个元素的集合的列表。我想从中构建一个由三个元素组成的集合列表。

例如,我的输入列表是 [{1, 2}, {2, 3}, {1, 3}, {3, 4}, {4, 5}]。

我想要一个输出,其中包含扁平输入列表中所有可能的三组。那是,

[{1, 2, 3}, {1, 2, 4}, {1, 2, 5}, {1, 3, 5}, {1, 3, 4}, {1, 4, 5} {2 , 3, 4}, {2, 3, 5}, {3, 4, 5}, {2, 4, 5}]

我运行以下代码以尝试使用 pandas 和 itertools 库函数来执行此操作:

def build_sets(item_list, set_size):
    flattened_item_list = list(set(flatten(item_list)))
    combinations = itertools.combinations(range(len(flattened_item_list)), set_size)
    return_list = []
    for i in combinations:
        combination_element = []
        for j in i:
            combination_element.append(flattened_item_list[j])
        return_list.append(set(combination_element))
    return return_list
Run Code Online (Sandbox Code Playgroud)

这里 set_size 指的是期望输出列表中每个集合的大小。对于较小的输入,此代码工作得很好,但如果输入列表包含数千个集合,则代码需要很长时间才能运行。 …

python list set python-itertools

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

如何将虚拟列连接到主表?

我正在尝试为分类变量创建虚拟变量。但是,当我创建它们时,我收到“ValueError:列重叠但未指定后缀”。这是代码:

dummy2 = pd.get_dummies(data['Teaching'], prefix='Teach')

dummy2.head ()
dummy2.columns = ['Small/Rural','Teaching']

data = data.join(dummy2)
##################
dummy3 = pd.get_dummies(data['Gender'], prefix='Gender_')

dummy3.head()
dummy3.columns = ['Male','Female']

data = data.join(dummy3)
#####################
dummy4 = pd.get_dummies(data['PositionTitle'], prefix='pos_')

dummy4.head()
dummy4.columns = ['Acting Director','RegioReresentative']

data = data.join(dummy4)
#####################


dummy5 = pd.get_dummies(data['Compensation'], prefix='COMP')

dummy5.head()
dummy5.columns = ['23987','46978','89473','248904']

data = data.join(dummy5)

#################3
dummy6 = pd.get_dummies(data['TypeControl'], prefix='Type')

dummy6.head()
dummy6.columns = ['City/country','District','Investor','Non Profit']

data = data.join(dummy6)
Run Code Online (Sandbox Code Playgroud)

python pandas dummy-variable

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

Pandas:基于 pandas 列中匹配子字符串的 Groupby

我有一个包含以下元素的列表:

emails= ['xyz.com', 'abc.com','def.com']
Run Code Online (Sandbox Code Playgroud)

现在,我有一个数据框,如下所示:

df:

UserID    Email_Address
U001      u001@abc.com
U002      u002@xyz.com
U003      u003@xyz.com
U004      u004@abc.com
U004      u005@def.com
U006      u006@def.com
U007      u007@def.com
Run Code Online (Sandbox Code Playgroud)

我想根据子字符串对 groupby 执行计数,其中子字符串是列表中的元素。

因此,输出应如下所示:

abc.com     2
def.com     3
xyz.com     2
Run Code Online (Sandbox Code Playgroud)

我当前的代码:

for domain in list1:
    count = df.groupby( [df.Email_Address.str.find(domain)]).sum()
Run Code Online (Sandbox Code Playgroud)

python group-by dataframe pandas

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

熊猫:附加一列与分位数值

我有以下数据框

   item_id group  price
0        1     A     10
1        3     A     30
2        4     A     40
3        6     A     60
4        2     B     20
5        5     B     50
Run Code Online (Sandbox Code Playgroud)

我希望根据每个组的价格添加一个分位数列,如下所示:

item_id       group        price    quantile
 01            A            10        0.25
 03            A            30        0.5
 04            A            40        0.75
 06            A            60        1.0
 02            B            20        0.5
 05            B            50        1.0
Run Code Online (Sandbox Code Playgroud)

我可以遍历整个数据帧并为每个组执行计算。但是,我想知道有没有更优雅的方法来解决这个问题?谢谢!

quantile dataframe python-3.x pandas pandas-groupby

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

如何仅在一个级别中在 Pandas 中创建组

我在我的 excel 文件中导入下面的 df3 数据框,并且只想对 Name 和 rest dublicate 数据进行分组,如下所示。

注意(每个月的数据将按月添加。)

Df3 =pd.read_Excel('Data')
print (df3)      

Name    ID  Month   Shift

Jon     1   Feb     A
Jon     1   Jan     B
Jon     1   Mar     C
Mike    1   Jan     A
Mike    1   Jan     B
Jon     1   Feb     C
Jon     1   Jan     A
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想在相同的格式中输出如下所示。请帮助我,就像我卡在这里一样。

在此处输入图片说明

将非常感谢您的帮助和支持。

python python-3.x pandas pandas-groupby vscode-python

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