我有这样的数据框:
county
1 N
2 N
3 C
4 N
5 S
6 N
7 N
Run Code Online (Sandbox Code Playgroud)
我想达到的是:
county frequency
1 N 5
2 N 5
3 C 1
4 N 5
5 S 1
6 N 5
7 N 5
Run Code Online (Sandbox Code Playgroud)
有没有可能直接添加这样的列而没有任何中间 df. 我知道我可以使用 group 和 size 函数创建另一个 df 并合并这两个数据帧。Howewer,我想知道是否有任何功能可以在没有任何中间 df 的情况下启用此类解决方案,但可能使用“应用”和某些功能或 Lamba?
我有一个 Pandas Dataframe,其日期列具有以下结构:
352 [2012-01-12 05:04:58]
353 [2008-07-16 20:38:21]
354 [2009-05-12 01:05:48]
355 [2012-01-12 05:04:58]
356 [2018-01-05 15:06:41]
357 [2017-07-17 22:03:43]
Name: Date, Length: 358, dtype: object
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这些是带有 的“对象”。我想将它们转换为 Datetime 对象。所以我使用了 pandas 函数:
pd.to_datetime(df['Date'])
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
Traceback (most recent call last):
File "/anaconda3/envs/py35thesis/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-185-adf5e63a666b>", line 1, in <module>
pd.to_datetime(df['Date'])
File "/anaconda3/envs/py35thesis/lib/python3.5/site-packages/pandas/core/tools/datetimes.py", line 451, in to_datetime
values = _convert_listlike(arg._values, True, format)
File "/anaconda3/envs/py35thesis/lib/python3.5/site-packages/pandas/core/tools/datetimes.py", line 368, in _convert_listlike
require_iso8601=require_iso8601
File "pandas/_libs/tslib.pyx", line 492, in pandas._libs.tslib.array_to_datetime …
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中包含有关我希望从中生成样本的总体信息。我还有一个数据框sample_info
,它详细说明了population
我的示例中需要的数据框中每个组的数量。我已经开发了一些代码来实现我的需要,但鉴于我正在使用的大型数据集,它的运行速度比我想要的要慢。
有没有办法对总体框架进行分组并将抽样应用于组,而不是像我在下面所做的那样循环遍历它们?
import pandas as pd
population = pd.DataFrame([[1,True],[1,False],[1,False],[2,True],[2,True],[2,False],[2, True]], columns = ['Group ID','Response'])
Group ID Response
0 1 True
1 1 False
2 1 False
3 2 True
4 2 True
5 2 False
6 2 True
sample_info = pd.DataFrame([[1,5],[2,6]], columns = ['Group ID','Sample Size'])
output = pd.DataFrame(columns = ['Group ID','Response'])
Group ID Sample Size
0 1 5
1 2 6
for index, row in sample_info.iterrows():
output = output.append(population.loc[population['Group ID'] == row['Group ID']].sample(n=row['Sample Size'], replace …
Run Code Online (Sandbox Code Playgroud) 有没有办法在 pandas df.plot 中设置辅助 Y 轴的限制
我有以下情节陈述。有没有办法简单地为辅助轴添加 ylim ?如“ secondary_ylim=(0,1)”
df[["Date","Col1","Col2"]].plot(x="date",y=["Col1","Col2"],secondary_y="Col2",ylim = (0,1))
Run Code Online (Sandbox Code Playgroud) 我有一个数据帧(df):
A B
1 a
2 b
3 c
Run Code Online (Sandbox Code Playgroud)
还有一系列:S = pd.Series(['x','y','z'])
我想为系列中的每个值重复数据帧df.预期的结果是这样的:结果:
S A B
x 1 a
y 1 a
z 1 a
x 2 b
y 2 b
z 2 b
x 3 c
y 3 c
z 3 c
Run Code Online (Sandbox Code Playgroud)
我如何实现这种输出?我正在考虑合并或加入,但合并会给我一个内存错误.我正在处理一个相当大的数据帧和系列.谢谢!
下面是pandas
dataframe
我的一个子集,我试图根据某些条件删除多行.
code1 code2 grp1 grp2 dist_km
0 M001 M002 AAA AAA 112
1 M001 M003 AAA IHH 275
2 M002 M005 AAA XXY 150
3 M002 M004 AAA AAA 65
4 M003 M443 IHH GRR 50
5 M003 M667 IHH IHH 647
6 M003 M664 IHH FFG 336
Run Code Online (Sandbox Code Playgroud)
所以我只想保持行的位置grp1
与grp2
每个行的相同,code1
但只有dist_km
那个特定的最小值code1
.
对于上面的示例,仅保留以下行:
code1 code2 grp1 grp2 dist_km
0 M001 M002 AAA AAA 112
3 M002 M004 AAA AAA 65 …
Run Code Online (Sandbox Code Playgroud) 我有一个包含列'name'的数据框.像'詹姆斯卡梅隆'这样的价值观.我想将它拆分为2个新列'First_Name'和'Last_Name',但数据中没有分隔符,所以我不太清楚如何.我意识到'詹姆斯'处于位置[0]并且'卡梅隆'处于位置[1],但我不确定你是否能够在没有分隔符的情况下认出
df = pd.DataFrame({'name':['James Cameron','Martin Sheen'],
'Id':[1,2]})
df
Run Code Online (Sandbox Code Playgroud)
编辑:
对于我提供的数据框架,Vaishali的回答完美无缺.我创建了该数据帧作为示例.我的真实代码看起来像这样"
data[['First_Name','Last_Name']] = data.director_name.str.split(' ', expand = True)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是一个错误:
'Columns must be same length as key'
Run Code Online (Sandbox Code Playgroud)
该列保持与我的示例相同的值.有什么建议?
谢谢
我正在尝试使用 Pandas 读取制表符分隔的 txt 文件。该文件如下所示:
14.38 14.21 0.8951 5.386 3.312 2.462 4.956 1<p>
14.69 14.49 0.8799 5.563 3.259 3.586 5.219 1<p>
14.11 14.12 0.8911 5.422 3.302 2.723 5 1<p>
Run Code Online (Sandbox Code Playgroud)
有些行有额外的标签。如果我使用 read_csv 或 read_fwf,并指定 sep='\t'。我得到的结果是这样的:
d
0 15.26\t14.84\t0.871\t5.763\t3.312\t2.221\t5.22\t1<p>
1 14.88\t14.57\t0.8811\t5.554\t3.333\t1.018\t4.9 <p>
Run Code Online (Sandbox Code Playgroud)
对于我可以指定哪些参数来处理这个问题,您有什么建议吗?谢谢。
解决方案:
使用 pd.read_csv(filename, delim_whitespace=True)
我有下面的脚本 & 在最后一行,我试图从名为“响应”的列中的字符串中删除停用词。
问题是,不是“有点恼火”变成“有点恼火”,它实际上甚至会丢弃字母 - 因此,有点恼火会变得有点恼火。因为'a'是一个停用词
任何人都可以给我建议吗?
import pandas as pd
from textblob import TextBlob
import numpy as np
import os
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
stop = stopwords.words('english')
path = 'Desktop/fanbase2.csv'
df = pd.read_csv(path, delimiter=',', header='infer', encoding = "ISO-8859-1")
#remove punctuation
df['response'] = df.response.str.replace("[^\w\s]", "")
#make it all lower case
df['response'] = df.response.apply(lambda x: x.lower())
#Handle strange character in source
df['response'] = df.response.str.replace("‰Ûª", "''")
df['response'] = df['response'].apply(lambda x: [item for item in x if item not in …
Run Code Online (Sandbox Code Playgroud) 如果值= 1,我如何在行之间进行迭代并在一列中打印列名称
mydata = [{'a' : '0', 'b': 1, 'c': 0}, {'a' : 1, 'b': 0, 'c':1}, {'a' : '0', 'b': 1, 'c':1}]
df = pd.DataFrame(mydata)
a b c Result
0 1 0 b
1 0 1 a , c
0 1 1 b , c
Run Code Online (Sandbox Code Playgroud)
结果仅显示等于1的列名称
我创建了一个 pandas 数据框,并将我的信息作为 DF 存储在给定的框架中
当我打印 df 时,我得到的输出为
Number changes Id
300 ['Body Weight', 'Color'] 12345
400 32145
500 45698
600 74125
700 Body Weight 96325
800 Body Weight 44444
900 ['band Voltage Rating', 'Body Weight'] 963258
1000 666666
Run Code Online (Sandbox Code Playgroud)
在某些地方对于列的更改有“[”和“]”。请告诉我如何删除这些括号?