我想计算给定列中的运行总和(当然不使用循环).需要注意的是,我有另一列指定何时将运行总和重置为该行中存在的值.最佳解释如下:
reset val desired_col
0 0 1 1
1 0 5 6
2 0 4 10
3 1 2 2
4 1 -1 -1
5 0 6 5
6 0 4 9
7 1 2 2
Run Code Online (Sandbox Code Playgroud)
desired_col 是我想要计算的值.
如何将列中每个单词的首字母大写?我顺便使用python pandas.例如,
Column1
The apple
the Pear
Green tea
Run Code Online (Sandbox Code Playgroud)
我的愿望结果将是:
Column1
The Apple
The Pear
Green Tea
Run Code Online (Sandbox Code Playgroud) 我有分隔符的字符串列表A和B:
L = ['sgfgfqds A aaa','sderas B ffff','eeee','sdsdfd A rrr']
Run Code Online (Sandbox Code Playgroud)
并需要:
L1 = [['aaa'], ['ffff'], ['eeee'], ['rrr']]
Run Code Online (Sandbox Code Playgroud)
我试过用:
L1 = [re.findall(r'(?<=A)(.*)$', inputtext) for inputtext in L]
print (L1)
Run Code Online (Sandbox Code Playgroud)
但是,它返回以下内容:
[[' aaa'], [], [], [' rrr']]
Run Code Online (Sandbox Code Playgroud)
如何获得所需的输出?
我尝试dict通过嵌套创建list:
groups = [['Group1', 'A', 'B'], ['Group2', 'C', 'D']]
L = [{y:x[0] for y in x if y != x[0]} for x in groups]
d = { k: v for d in L for k, v in d.items()}
print (d)
{'B': 'Group1', 'C': 'Group2', 'D': 'Group2', 'A': 'Group1'}
Run Code Online (Sandbox Code Playgroud)
但它似乎有点复杂.
有更好的解决方案吗?
我有一个Json文件如下.这是一个dicts列表.
[{"city": "ab", "trips": 4, "date": "2014-01-25", "value": 4.7, "price": 1.1, "request_date": "2014-06-17", "medium": "iPhone", "%price": 15.4, "type": true, "Weekly_pct": 46.2, "avg_dist": 3.67, "avg_price": 5.0}, {"city": "bc", "trips": 0, "date": "2014-01-29", "value": 5.0, "price": 1.0, "request_date": "2014-05-05", "medium": "Android", "%price": 0.0, "type": false, "weekly_pct": 50.0, "avg_dist": 8.26, "avg_price": 5.0}.....]
Run Code Online (Sandbox Code Playgroud)
当我用这个读到这个:
data=pd.read_json('dataset.json')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError:预期的对象或值
我也试过这个:
from ast import literal_eval
with open('dataset.json') as f:
data = literal_eval(f.read())
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
ValueError:格式错误的字符串
编辑:
即使Json.loads也行不通.试过这个:
import json
data=json.loads('dataset.json')
Run Code Online (Sandbox Code Playgroud)
ValueError:无法解码JSON对象
Json文件是13.5MB,但它似乎有大量的数据.
我有一个Pandas DataFrame,混合了屏幕名称,推文,收藏等.我想找到'favcount'的最大值(我已经做过)并且还返回'tweet'的屏幕名称
df = pd.DataFrame()
df['timestamp'] = timestamp
df['sn'] = sn
df['text'] = text
df['favcount'] = fav_count
print df
print '------'
print df['favcount'].max()
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到任何相关内容,任何人都可以帮助指导我朝着正确的方向前进吗?
我可以通过定义用户函数然后使用apply在Panda中添加一个新列.但是,我想用lambda做到这一点; 有办法吗?
例如,df有两列a和b.我想创建一个新列c,它等于a和之间的最长长度b.
就像是:
df['c'] = df.apply(lambda x, len(df['a']) if len(df['a']) > len(df['b']) or len(df['b']) )
Run Code Online (Sandbox Code Playgroud)
一种方法:
df = pd.DataFrame({'a':['dfg','f','fff','fgrf','fghj'], 'b' : ['sd','dfg','edr','df','fghjky']})
df['c'] = df.apply(lambda x: max([len(x) for x in [df['a'], df['b']]]))
print df
a b c
0 dfg sd NaN
1 f dfg NaN
2 fff edr NaN
3 fgrf df NaN
4 fghj fghjky NaN
Run Code Online (Sandbox Code Playgroud) 我有一个71列和30597行的数据帧.我想用1替换所有非nan条目,用0替换nan值.
最初,我尝试对数据帧的每个值进行for循环,这花费了太多时间.
然后我使用了data_new = data.subtract(data),这意味着将数据帧的所有值减去它自己,这样我就可以使所有非空值为0.但是由于数据帧有多个字符串条目,所以发生错误.
list在应用str.findall()到pandas数据帧的列之后,我想出了方括号中的值(更像是a ).如何拆下方括号?
print df
id value
1 [63]
2 [65]
3 [64]
4 [53]
5 [13]
6 [34]
Run Code Online (Sandbox Code Playgroud) 我想diff按小组计算.我不知道如何对time列进行排序,以便每个组的结果都是排序的和正面的.
原始数据:
In [37]: df
Out[37]:
id time
0 A 2016-11-25 16:32:17
1 A 2016-11-25 16:36:04
2 A 2016-11-25 16:35:29
3 B 2016-11-25 16:35:24
4 B 2016-11-25 16:35:46
Run Code Online (Sandbox Code Playgroud)
我想要的结果
Out[40]:
id time
0 A 00:35
1 A 03:12
2 B 00:22
Run Code Online (Sandbox Code Playgroud)
注意:时间col的类型是timedelta64 [ns]
In [38]: df['time'].diff(1)
Out[38]:
0 NaT
1 00:03:47
2 -1 days +23:59:25
3 -1 days +23:59:55
4 00:00:22
Name: time, dtype: timedelta64[ns]
Run Code Online (Sandbox Code Playgroud)
没有得到理想的结果.
不仅解决问题,而且代码可以快速运行,因为有5000万行.