天道酬勤,学无止境

dataframe

Use word count in Pandas dataframe to drop rows with only one word

问题 我有一个包含 2 条记录的数据框(数据): id text 0001 The farmer plants grain 0002 tuna 我想计算这个数据框的text列中的单词数,并删除只有一个单词的行。 我知道如何计算字数: count = data['text'].str.split().str.len() 如何使用结果来运行将删除数据框中的行的 IF 语句? 任何 IF 语句,例如... if count == 1: print('drop') ...导致此错误: Traceback (most recent call last): File "<ipython-input-118-b3fcb0218e8e>", line 32, in <module> if count == 1: File "C:\Users\taca\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 917, in __nonzero__ .format(self.__class__.__name__)) ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a

2022-07-11 10:00:39    分类:技术分享    python   pandas   dataframe

Add columns in pandas dataframe dynamically

问题 我有以下代码来加载数据框 import pandas as pd ufo = pd.read_csv('csv_path') print(ufo.loc[[0,1,2] , :]) 给出以下输出,请参阅 csv 的结构 City Colors Reported Shape Reported State Time 0 Ithaca NaN TRIANGLE NY 6/1/1930 22:00 1 Willingboro NaN OTHER NJ 6/30/1930 20:00 2 Holyoke NaN OVAL CO 2/15/1931 14:00 现在,我想在现有列的基础上添加一个额外的列。 我有一个列表,其中包含参与列的索引。 它可以是0,1或0,2,3或1,2,3任何值。 我需要动态创建它。 我可以想出以下 df1['combined'] = df1['City']+','+df1['State'] 放置索引似乎不起作用。 我想加入那些专栏。 使用','.join() 回答1 df[[0,2,3]].apply(','.join, axis=1) #0 Ithaca,TRIANGLE,NY #1 Willingboro,OTHER,NJ #2 Holyoke,OVAL,CO #dtype: object 回答2 如果索引列表是l ,您可以使用 pd.Series.cat

2022-07-11 09:53:12    分类:技术分享    python   pandas   dataframe

Ignoring NaN in a dataframe

问题 回答1 import pandas as pd import numpy as np df = pd.DataFrame({'col1': np.random.randint(0, 10, 12)}) df.loc[2] = np.nan df.loc[5] = np.nan df['col1'].unique() ### output: array([ 4., 0., nan, 8., 1., 3., 2., 6.]) df['col1'].dropna().unique() ### output: array([ 4., 0., 8., 1., 3., 2., 6.])

2022-05-17 05:21:22    分类:技术分享    python   pandas   numpy   dataframe

replace values by the mean

问题 我有一个数据框如下: Col1 Price 1 Plastic 50 2 Metal 100 3 Plastic 40 我想用价格中的方法替换 Col1 中的值,所以我得到: Col1 Price 1 45 50 2 100 100 3 45 40 我已经做过: df.groupby('Col1').mean()['Price'] 但我不知道如何替换值,也许使用 map ? 回答1 df['Col1'] = df['Col1'].map(df.groupby('Col1')['Price'].mean()) df Col1 Price 1 45 50 2 100 100 3 45 40 回答2 df.assign(Col1=df.Col1.map(df.groupby('Col1').mean().squeeze())) Col1 Price 1 45 50 2 100 100 3 45 40 回答3 df['Col1']=df.groupby(['Col1'])['Price'].transform('mean') Col1 Price 0 45 50 1 100 100 2 45 40

2022-05-17 05:07:13    分类:技术分享    python   pandas   numpy   dataframe   pandas-groupby

Change column variable string from "1" to "01"

问题 我在数据框中有一列是字符类型。 变量是 1、01、2、01、3、03、4、04 等的混合。 我如何选择没有前导“0”和格式的所有内容,以便它们都是 01、02、03、04 等 回答1 我们需要先将其转换为numeric并使用sprintf df1$col1 <- sprintf("%02d", as.numeric(df1$col1)) df1$col1 #[1] "01" "01" "02" "01" "03" "03" "04" "04" 如果是factor列,请先转换为character ,然后再转换为numeric df1$col1 <- sprintf("%02d", as.numeric(as.character(df1$col1))) 如果包含字母 df1$col1 <- c(1, '01', 2, '01', 3, 'A', 4, '04') i1 <- grepl("^[0-9]$", df1$col1) df1$col1[i1] <- paste0("0", df1$col1[i1]) df1$col1 #[1] "01" "01" "02" "01" "03" "A" "04" "04" 数据 df1 <- data.frame(col1 = c(1, '01', 2, '01', 3, '03', 4, '04'), stringsAsFactors

2022-05-17 03:49:17    分类:技术分享    r   dataframe

Remove rows from data frame using row indices where row indices might be zero length vector

问题 我想使用行的数字索引从某些数据框中删除一些行。 但有时我要删除的索引向量变成零长度向量。 在这种情况下,我希望不应该从原始数据框中删除任何内容。 但是,一切都被丢弃了,而不是什么都没有。 例如,这里drop按预期工作 df = data_frame( a = 10:12 ) drop = c(1,2) df[ -drop, ] # # A tibble: 1 × 1 # a # <int> # 1 12 但是当drop是零长度向量时,删除这些行不会像我预期的那样工作。 drop = integer() df[ -drop, ] # A tibble: 0 × 1 # ... with 1 variables: a <int> 我期望在没有任何修改的情况下获得整个df对象。 如何在行索引可能成为零长度向量的情况下使用行索引安全地从数据框中删除行? 回答1 因此,最好使用%in%和 negate ! 它 df[!seq_len(nrow(df)) %in% drop, ] 因为它是一个data_frame ,我们可以使用tidyverse方法 df %>% filter(!row_number() %in% drop) 回答2 df <- data.frame(a = 10:12) drop <- c(1,2) 'if'(length(drop) == 0, df, df[

2022-05-17 02:50:23    分类:技术分享    r   dataframe   dplyr

Comparison of a Dataframe column values with a list

问题 考虑这个数据框: df = pd.DataFrame({'A': [1, 1, 2, 2, 3, 3], 'B': [10, 15, 20, 25, 30,35], 'C': [100, 150, 200, 250, 300, 350]}) 这是获取 C 列值的代码,它是每组的第一行(A 列): firsts = df.groupby('A').first()['C'] 所以首先是: (100, 200, 300) 。 现在我想添加新列,如果行的列 C 的值是firsts一个,它将是1 ,否则它将是0 。 一种乙 C D 1 10 100 1 1 15 150 0 2 20 200 1 2 25 250 0 3 30 300 1 3 35 350 0 我用这个: df['D'] = df['C'].apply(lambda x: 1 if x in firsts else 0) 但输出是: 一种乙 C D 1 10 100 0 1 15 150 0 2 20 200 0 2 25 250 0 3 30 300 0 3 35 350 0 如果有人解释为什么我的解决方案是错误的以及这个问题的实际解决方案是什么,我将不胜感激? 回答1 TL;博士: df['newColumn'] = np.where((df.compareColumn.isin(yourlist))

2022-05-17 02:35:11    分类:技术分享    python   pandas   dataframe

Summarize data in R

问题 我有一个数据集,其中包含各种产品的每周销售量。 以下是数据的样子: Store ID Week ID Item Code Sales in $ 253422 191 41130 2.95 272568 188 41130 2.95 272568 188 41160 2.95 272568 189 41130 2.95 272568 189 41160 2.95 272568 190 41160 2.95 217460 188 41110 2.95 217460 188 41130 5.9 217460 188 41160 5.9 217460 189 41110 11.8 217460 189 41130 8.85 217460 189 41160 11.8 217460 191 41130 5.95 217460 191 41160 8.93 这是一个非常大的数据集,我想生成一个汇总输出,它为我提供了 ITEM 明智的总销售额和该项目所在的商店数量。 我尝试了以下方法,但这不起作用,因为我得到了一个由于数据集中重复数周而重复的商店计数: dataset %>% group_by(Store ID) %>% summarize(count(Item Code)) 非常感谢任何帮助。 谢谢 回答1 这是使用dplyr的一种方法 library(dplyr) df <-

2022-05-17 02:28:10    分类:技术分享    r   dataframe   count   dplyr   summarize

Create LineString for unique values in Pandas DataFrame

问题 我有一个我想迭代的熊猫数据框。 例如,我的数据框的简化版本可以是: abc begin end ID Lat Long def1 001 123 CAT 13.167 52.411 def2 002 129 DOG 13.685 52.532 def3 003 145 MOOSE 13.698 52.131 def1 004 355 CAT 13.220 52.064 def2 005 361 CAT 13.304 52.121 def3 006 399 DOG 12.020 52.277 def1 007 411 MOOSE 13.699 52.549 def2 008 470 MOOSE 11.011 52.723 我想遍历每个唯一 ID 并从匹配的 Lat / Long 列创建一个(匀称的)LineString。 grp = df.groupby('ID') for x in grp.groups.items(): # this is where I need the most help 对于上面的示例,我希望将 3 个 LineStrings 放回单个字典中的三个迭代。 {'CAT':LINESTRING (13.167 52.411, 13.22 52.064, 13.304 52.121), 'DOG':LINESTRING (13.685 52.532, 12

2022-05-17 02:14:10    分类:技术分享    python   pandas   dataframe   shapely

Simple way to remove special characters and alpha numerical from dataframe

问题 我有一个包含 x 行和 y 列的大型数据集。 其中一列作为单词和一些不需要的数据。 不需要的数据没有特定的模式,因此我发现很难从数据框中删除它。 nonhashtag ['want', 'better', 'than', 'Dhabi,', 'United', 'Arab', 'Emirates'] ['Just', 'posted', 'photo', 'Rasim', 'Villa'] ['Dhabi', 'International', 'Airport', '(AUH)', '\xd9\x85\xd8\xb7\xd8\xa7\xd8\xb1', '\xd8\xa3\xd8\xa8\xd9\x88', '\xd8\xb8\xd8\xa8\xd9\x8a', '\xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84\xd9\x8a', 'Dhabi'] ['just', 'shrug', 'off!', 'Dubai', 'Mall', 'Burj', 'Khalifa'] ['out!', 'Cowboy', 'steppin', 'Notorious', 'going', 'sleep!', 'Make', 'happen'] ['Buona', 'notte', '\xd1\x81\xd0\xbf\xd0\xbe\xd0\xba\xd0

2022-05-16 23:35:12    分类:技术分享    python   regex   pandas   dataframe   data-cleaning