我想将处理过的数据存储在 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。
表(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) 我有一个像这样的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转置函数,但我不确定如何从宽格式转换为长格式
假设我们有一个 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)
所以我想选择带有猫、老鼠、球的行。对不起,人为设计的例子。
我正在使用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) 我有一个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的新值
假设我有一个包含两个元素的集合的列表。我想从中构建一个由三个元素组成的集合列表。
例如,我的输入列表是 [{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 指的是期望输出列表中每个集合的大小。对于较小的输入,此代码工作得很好,但如果输入列表包含数千个集合,则代码需要很长时间才能运行。 …
我正在尝试为分类变量创建虚拟变量。但是,当我创建它们时,我收到“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) 我有一个包含以下元素的列表:
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) 我有以下数据框
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)
我可以遍历整个数据帧并为每个组执行计算。但是,我想知道有没有更优雅的方法来解决这个问题?谢谢!
我在我的 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)
我想在相同的格式中输出如下所示。请帮助我,就像我卡在这里一样。
将非常感谢您的帮助和支持。