我有一个'DataFrame`偶尔有缺失值,看起来像这样:
Monday Tuesday Wednesday
================================================
Mike 42 NaN 12
Jenna NaN NaN 15
Jon 21 4 1
Run Code Online (Sandbox Code Playgroud)
我想新添加column
到我的数据帧在那里我会计算所有的平均值columns
为每row
.
意思,因为Mike
,我需要
(df['Monday'] + df['Wednesday'])/2
,但因为Jenna
,我只是使用df['Wednesday amt.']/1
有没有人知道解决由于缺失值导致的这种变化并计算平均值的最佳方法?
我在pandas数据框中有多个带有长字符串的列,但我只对检查其中一个有兴趣.有没有办法使用的线沿线的东西的方式pd.set_option('max_colwidth', 60)
,但对于单个列而已,而不是扩大所有列的宽度,在我的DF?
我有一个数据帧df
,有三列:count_a
,count_b
和date
; 计数是浮点数,日期是2015年的连续日期.
我试图弄清楚每一天在列count_a
和count_b
列中的计数之间的差异- 意思是,我正在尝试计算这两列中每行和前一行之间的差异.我已将日期设为索引,但我无法确定如何执行此操作; 有一些关于使用的提示pd.Series
,pd.DataFrame.diff
但我没有找到适用的答案或一套说明.
我有点卡住了,并希望得到一些指导.
这是我的数据框架的样子:
df=pd.Dataframe({'count_a': {Timestamp('2015-01-01 00:00:00'): 34175.0,
Timestamp('2015-01-02 00:00:00'): 72640.0,
Timestamp('2015-01-03 00:00:00'): 109354.0,
Timestamp('2015-01-04 00:00:00'): 144491.0,
Timestamp('2015-01-05 00:00:00'): 180355.0,
Timestamp('2015-01-06 00:00:00'): 214615.0,
Timestamp('2015-01-07 00:00:00'): 250096.0,
Timestamp('2015-01-08 00:00:00'): 287880.0,
Timestamp('2015-01-09 00:00:00'): 332528.0,
Timestamp('2015-01-10 00:00:00'): 381460.0,
Timestamp('2015-01-11 00:00:00'): 422981.0,
Timestamp('2015-01-12 00:00:00'): 463539.0,
Timestamp('2015-01-13 00:00:00'): 505395.0,
Timestamp('2015-01-14 00:00:00'): 549027.0,
Timestamp('2015-01-15 00:00:00'): 595377.0,
Timestamp('2015-01-16 00:00:00'): 649043.0,
Timestamp('2015-01-17 00:00:00'): 707727.0,
Timestamp('2015-01-18 00:00:00'): 761287.0,
Timestamp('2015-01-19 00:00:00'): …
Run Code Online (Sandbox Code Playgroud) 我在 JSON 文件中有一个字典列表,如下所示:
[{"url": "http://www.URL1.com", "date": "2001-01-01"},
{"url": "http://www.URL2.com", "date": "2001-01-02"}, ...]
Run Code Online (Sandbox Code Playgroud)
但是我正在努力将它导入到熊猫数据框中 - 这应该很容易,但我对此感到茫然。任何人都可以让我直接在这里?
同样,简单地将其读入字典列表以在 python 中使用的最佳方法是什么?
我有一个dF,它的长度超过10万行,宽度为几列-没什么疯狂的。我试图基于约4000个字符串的列表来对行进行子集化,但是却在努力寻找方法。有没有办法使用类似的子集。
dF看起来像这样
dog_name count
===================
Jenny 2
Fido 4
Joey 7
Yeller 2
Run Code Online (Sandbox Code Playgroud)
字符串列表包含变量 dog_name_list=['Fido', 'Yeller']
我已经尝试了的类似方法
df[df['dog_name'].isin(dog_name_list)
,但遇到了一个有趣的错误:unhashable type: 'list'
我已经通过查看列表中是否存在值来检查了类似的问题,文档 和此细分数据集的框架,但这使我无处可去,而我对丢失的内容感到有些困惑。真的会感谢别人的建议!
我不确定这是否是愚蠢的方法,但是我有几个数据帧,所有数据帧都有相同的列。我需要重命名每个列中的列以反映每个数据框的名称(此后,我将对所有这些列进行外部合并)。
比方说,数据帧被称为df1
,df2
并且df3
,每个包含列name
,date
和count
。
我想每一列重命名df1
为name_df1
,date_df1
和count_df1
。
我编写了一个函数来重命名列,因此:
df_list=[df1, df2, df3]
def rename_cols():
col_name="name"+suffix
col_count="count"+suffix
col_date="date"+suffix
for x in df_list:
if x['name'].tail(1).item() == df1['name'].tail(1).item():
suffix="_"+"df1"
rename_cols()
continue
elif x['name'].tail(1).item() == df2['name'].tail(1).item():
suffix="_"+"df2"
rename_cols()
continue
else:
suffix="_"+"df3"
rename_cols()
col_names=[col_name,col_date,col_count]
x.columns=col_names
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到以下错误: KeyError: 'name'
我真的很难弄清楚为什么会这样。df1的列(的第一个数据帧df_list
)被重命名。其他所有内容都保持不变...我是在搞乱基本语法(可能是),还是我对事情应该如何工作有根本的误解?
据我所知,列表中的第一个数据帧将不止一次地迭代-但是为什么会这样呢?
我有一个看起来像这样的数据框:
Dog_breed Dog_name Points
============================================================
Monday Pug George 12
Tuesday Poodle Fido -15
Wednesday Pug Buddy 8
Thursday Dachshund Lyla -10
Friday Poodle Remi 9
Saturday Pug Kermit -5
Sunday Beagle Sara 3
Run Code Online (Sandbox Code Playgroud)
对于每个品种的狗(即类别),我需要得到点的总和——对于某些行,它是正数,而对于某些行,它是负数——以及该品种的狗的数量。
目标是将每个品种的所有点加起来,计算每个品种在原始数据集中出现的次数,最终得到如下所示的数据框:
Quantity Overall_point_change
============================================
Pug 3 15
Poodle 2 -6
Dachshund 1 -10
Beagle 1 3
Run Code Online (Sandbox Code Playgroud)
大熊猫可以这样做,还是需要循环?真的很难解决这个问题——有人可以推荐一种设置方法吗?
我有一个正在 R 中使用的数据框,我正在尝试检查某个值在其较大的关联组中出现的次数。具体来说,我正在尝试计算为每个特定国家/地区列出的城市数量。
我的数据看起来像这样:
City Country
=========================
New York US
San Francisco US
Los Angeles US
Paris France
Nantes France
Berlin Germany
Run Code Online (Sandbox Code Playgroud)
似乎 table() 是要走的路,但我不太明白——我怎么能找出每个国家有多少个城市?也就是说,如何找出一列中有多少字段与另一列中的特定值相关联?
编辑:
我希望有类似的东西
3 US
2 France
1 Germany
Run Code Online (Sandbox Code Playgroud) 我是C的新手,并且已经盯着这段代码了一段时间:
void readEntireFile(){
int ch;
FILE *fp; // pointer to a file type
fp = fopen("/some/path/file", "r"); // Change to match your path
ch = getc(fp);
while (ch != EOF){ // keep looping until End Of File
putchar(ch); // print the characters read
ch = getc(fp);
}
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
此函数创建一个指向文件的指针,获取第一个字符,只要该字符不是EOF字符,就打印出char.这一直持续到达到EOF字符.
我的问题很简单:为什么每次指针继续指向下一个字符?我看不出它是如何增加的,我真的很困惑!
编辑:除了下面的答案,这个问题也帮助我理解.