我使用pandas df.value_counts()来查找特定品牌的出现次数.我想在初始数据框中将这些值计数与各自的品牌合并.
df has many columns including one named 'brands'
brands = df.brands.value_counts()
brand1 143
brand2 21
brand3 101
etc.
Run Code Online (Sandbox Code Playgroud)
如何将值计数与原始数据框合并,以便每个品牌的相应计数位于新列中,例如"brand_count"?
是否可以为这些列分配标题; 名称函数不适用于系列,我无法将其转换为数据帧,可能以这种方式合并数据.但是,value_counts输出一系列dtype int64(品牌名称应该是类型字符串),这意味着我不能执行以下操作:
df2 = pd.DataFrame({'brands': list(brands_all[0]), "brand_count":
list(brands_all[1])})
(merge with df)
Run Code Online (Sandbox Code Playgroud)
最终,我想得到这个:
col1 col2 col3 brands brand_count ... col150
A 30
C 140
A 30
B 111
Run Code Online (Sandbox Code Playgroud) Eprime输出一个.txt文件,如下所示:
*** Header Start ***
VersionPersist: 1
LevelName: Session
Subject: 7
Session: 1
RandomSeed: -1983293234
Group: 1
Display.RefreshRate: 59.654
*** Header End ***
Level: 2
*** LogFrame Start ***
MeansEffectBias: 7
Procedure: trialProc
itemID: 7
bias1Answer: 1
*** LogFrame End ***
Level: 2
*** LogFrame Start ***
MeansEffectBias: 2
Procedure: trialProc
itemID: 2
bias1Answer: 0
我想解析它并将其写入.csv文件,但删除了多行.
我试图创建一个字典,将冒号前面的文本作为键,然后将文本作为值:
{subject: [7, 7], bias1Answer : [1, 0], itemID: [7, 2]}
def load_data(filename):
data = {}
eprime = open(filename, 'r')
for line in eprime: … 对于一个字符串,下面的代码删除unicode字符和新行/回车:
t = "We've\xe5\xcabeen invited to attend TEDxTeen, an independently organized TED event focused on encouraging youth to find \x89\xdb\xcfsimply irresistible\x89\xdb\x9d solutions to the complex issues we face every day.,"
t2 = t.decode('unicode_escape').encode('ascii', 'ignore').strip()
import sys
sys.stdout.write(t2.strip('\n\r'))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在pandas中编写一个函数来将它应用于列的每个单元格时,它会因为属性错误而失败,或者我收到一条警告,表示正在尝试在DataFrame的一个切片副本上设置一个值
def clean_text(row):
row= row["text"].decode('unicode_escape').encode('ascii', 'ignore')#.strip()
import sys
sys.stdout.write(row.strip('\n\r'))
return row
Run Code Online (Sandbox Code Playgroud)
应用于我的数据框:
df["text"] = df.apply(clean_text, axis=1)
Run Code Online (Sandbox Code Playgroud)
如何将此代码应用于系列的每个元素?